Effective Java中文版(第2版)

Effective Java中文版(第2版)
定價:312
NT $ 271
  • 作者:(美)布洛克
  • 出版社:機械工業出版社
  • 出版日期:2009-01-01
  • 語言:簡體中文
  • ISBN10:7111255836
  • ISBN13:9787111255833
  • 裝訂:287頁 / 普通級 / 1-1
 

內容簡介

在Java編程中78條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。通過對Java平台設計專家所使用的技術的全面描述,揭示了應該做什麼,不應該做什麼才能產生清晰、健壯和高效的代碼。第2版反映了Java 5中最重要的變化,並刪去了過時的內容。

本書中的每條規則都以簡短、獨立的小文章形式出現,並通過示例代碼加以進一步說明。

Joshua Bloch,是Google公司的首席Java架構師。是Jolt大獎的獲得者。他曾是Sun公司的傑出工程師,和Transarc公司的高級系統設計師。Bloch曾帶領團隊設計和實現過無數的Java平台特性,包括JDK 5.0語言增強版和獲獎的Java Collections Framework。他的著作還包括:《Java Puzzlers》、《Java Concurrency in Practive》等。
 

目錄

譯者序

前言
致謝
第1章 引言
第2章 創建和銷毀對象
第1條:考慮用靜態工廠方法代替構造器
第2條:遇到多個構造器參數時要考慮用構建器
第3條:用私有構造器或者枚舉類型強化Singleton屬性
第4條:通過私有構造器強化不可實例化的能力
第5條:避免創建不必要的對象
第6條:消除過期的對象引用
第7條:避免使用終結方法

第3章 對於所有對象都通用的方法
第8條:覆蓋equals時請遵守通用約定
第9條:覆蓋equals時總要覆蓋hashCode
第10條:始終要覆蓋toString
第11條:謹慎地覆蓋clone
第12條:考慮實現Comparable接口

第4章 類和接口
第13條:使類和成員的可訪問性最小化
第14條:在公有類中使用訪問方法而非公有域
第15條:使可變性最小化
第16條:復合優先於繼承
第17條:要麼為繼承而設計,並提供文檔說明,要麼就禁止繼承
第18條:接口優於抽象類
第19條:接口只用於定義類型
第20條:類層次優於標簽類
第21條:用函數對象表示策略
第22條:優先考慮靜態成員類

第5章 泛型
第23條:請不要在新代碼中使用原生態類型
第24條:消除非受檢警告
第25條:列表優先於數組
第26條:優先考慮泛型
第27條:優先考慮泛型方法
第28條:利用有限制通配符來提升API的靈活性
第29條:優先考慮類型安全的異構容器

第6章 枚舉和注解
第30條:用enum代替int常量
第31條:用實例域代替序數
第32條:用EnumSet代替位域
第33條:用EnumMap代替序數索引
第34條:用接口模擬可伸縮的枚舉
第35條:注解優先於命名模式
第36條:堅持使用Override注解
第37條:用標記接口定義類型

第7章 方法
第38條:檢查參數的有效性
第39條:必要時進行保護性拷貝
第40條:謹慎設計方法簽名
第41條:慎用重載
第42條:慎用可變參數
第43條:返回零長度的數組或者集合,而不是:null
第44條:為所有導出的API元素編寫文檔注釋

第8章 通用程序設計
第45條:將局部變量的作用域最小化
第46條:for-each循環優先於傳統的for循環
第47條:了解和使用類庫
第48條:如果需要精確的答案,請避免使用float和double
第49條:基本類型優先於裝箱基本類型
第50條:如果其他類型更適合,則盡量避免使用字符串
第51條:當心字符串連接的性能
第52條:通過接口引用對象
第53條:接口優先於反射機制
第54條:謹慎地使用本地方法
第55條:謹慎地進行優化
第56條:遵守普遍接受的命名慣例

第9章 異常
第57條:只針對異常的情況才使用異常
第58條:對可恢復的情況使用受檢異常,對編程錯誤使用運行時異常
第59條:避免不必要地使用受檢的異常
第60條:優先使用標准的異常
第61條:拋出與抽象相對應的異常
第62條:每個方法拋出的異常都要有文檔
第63條:在細節消息中包含能捕獲失敗的信息
第64條:努力使失敗保持原子性
第65條:不要忽略異常

第10章 並發
第66條:同步訪問共享的可變數據
第67條:避免過度同步
第68條:executor和task優先干線程
第69條:並發工具優先於wait和notify
第70條:線程安全性的文檔化
第71條:慎用延遲初始化
第72條:不要依賴於線程調度器
第73條:避免使用線程組

第11章 序列化
第74條:謹慎地實現Serializable接口
第75條:考慮使用自定義的序列化形式
第76條:保護性地編寫readObject方法
第77條:對於實例控制,枚舉類型優先於readResolve
第78條:考慮用序列化代理代替序列化實例

附錄 第1版與第2版條目對照
中英文術語對照
參考文獻
 

如果有一個同事這樣對你說,「我的配偶今天晚上在家里制造了一頓不同尋常的晚餐,你願意來參加嗎?」(Spouse of me this night today manufactures the unusual meal in a home.You will join?)這時候你腦子里可能會浮現起三件事情:第一,滿腦子的疑惑;第二,英語肯定不是這位同事的母語;第三,同事是在邀請你參加他的家庭晚宴。

如果你曾經學習過第二種語言,並且嘗試過在課堂之外使用這種語言,你就該知道有三件事情是必須掌握的:這門語言的結構如何(語法),如何命名你想談論的事物(詞匯),以及如何以慣用和高效的方式來表達日常的事物(用法)。在課堂上大多只涉及前面兩點,當你使出渾身解數想讓對方明白你的意思時,常常會發現當地 人對你的表述忍俊不禁。

程序設計語言也是如此。你需要理解語言的核心:它是面向算法的,還是面向函數的,或者是面向對象的?你需要知道詞匯表:標准類庫提供了哪些數據結構、操作和功能(Facility)?你還需要熟悉如何用習慣和高效的方式來構建代碼。關於程序設計語言的書籍通常只是涉及前面兩點,或者只是蜻蜓點水般地介紹一下用法。也許是因為前面兩點比較容易編寫。語法和詞匯是語言本身固有的特性,但是,用法則反映了使用這門語言的群體的特征。

例如,Java程序設計語言是一門支持單繼承的面向對象程序設計語言,在每個方法的內部,它也支持命令式的(面向語句 的,statement-Oriented)編碼風格。Java類庫提供了對圖形顯示、網絡、分布式計算和安全性的支持。但是,如何把這門語言以最佳的方 式運用到實踐中呢?

還有一點:程序與口語中的句子以及大多數書籍和雜志都不同,它會隨着時間的推移而發生變化。僅僅編寫出能夠有效地工作並且能夠 被別人理解的代碼往往是不夠的,我們還必須把代碼組織成易於修改的形式。針對某個任務可能會有10種不同的編碼方法,而在這10種方法中,有7種方法是笨 拙的、低效的或者是難以理解的。而在剩下的3種編碼方法中,哪一種會是最接近該任務的下一年度發行版本的代碼呢?

目前有大量的書籍可以供你學習 Java程序設計語言的語法,包括《he Java Programming Language》[Arnold05](作者Amold、Gosling和Holmes),以及《The Java Language Specification》[JLS](作者Gosling、Joy和Bracha)。同樣,與Java程序設計語言相關的類庫租API的書籍也不少。

本書解決了你的第三種需求:習慣和高效的用法。作者Joshua Bloch在Sun公司多年來一直從事Java語言的擴展、實現和使用的工作;他還大量地閱讀了其他人的代碼,包括我的代碼。他在本書中提出了許多很好的 建議,他系統地把這些建議組織起來,旨在告訴讀者如何更好地構造代碼以便它們能工作得更好,也便於其他人能夠理解這些代碼,便於將來對代碼進行修改和改善的時候不至於那麼頭疼。甚至,你的程序也會因此而變得更加令人愉悅、更加優美和雅致。
網路書店 類別 折扣 價格
  1. 新書
    87
    $271