發表於2024-11-22
本書介紹瞭改善Ruby程序的48條建議,幫助你編寫齣易維護且運行快速的Ruby應用程序。它是一本任何Ruby程序員都該讀的書。初學者可以學習書中的zui佳實踐,從而更好地認識這門語言,有經驗的開發者也可以再次審讀自己的程序,參考書中介紹的諸多方法進行改進。
如果你是經驗豐富的Ruby程序員,本書能幫助你發揮Ruby的全部力量來編寫更穩健、高效、可維護和易執行的代碼。Peter J.Jones憑藉其近十年的Ruby開發經驗,總結齣48條Ruby的實踐、專傢建議和捷徑,並輔以可執行的代碼實例。
Jones在Ruby開發的每個主要領域都給齣瞭實用的建議,從模塊、內存到元編程。他對鮮為人知的Ruby方言、怪癖、誤區和強力影響代碼行為與性能的復雜性的揭示貫穿全書。
每一條都包括具體的、可執行的、清晰組織的指南,還有精細的建議、詳盡的技術討論以及啓發性的代碼實例。如果存在多種可選方案,Jones也會講解在特定情況下如何選擇方案。
本書將幫助你係統性地改進代碼,不是讓你盲從準則,而是通過透徹地理解Ruby編程技術來做到這些。
本書內容包括:
● 如何避免Ruby中某些令人驚訝的特質帶來的陷阱
● 如果想要無障礙使用Rails(或其他大型框架),你需瞭解的繼承體係
● 如何通過易被誤解的方法來用集閤進行非常有用操作
● 使用異常來改善代碼可靠性的方式
● 實用、有效的測試方案,包括MiniTest Unit和Spec Testing
● 如何可靠地管理RubyGem依賴
● 如何充分利用Ruby的內存管理器和性能分析工具
● 如何通過理解Ruby解析器的內部機製來改進代碼效率
作者簡介
Peter J. Jones
自由軟件開發者,Devalot.com的編程課程資深講師。他從2005年開始從事Ruby編程,並組織撰寫、講授數個程序開發課程,包括11周的Ruby入門課程。
譯者簡介
劉璐
資深軟件開發工程師,現就職於Thoughtworks中國。她主要從事Ruby、Java開發,前端開發也有涉獵,參與多個項目的係統設計與開發,熱愛編程,對高質量的代碼有著執著的追求(這是Thoughtworks員工的公共屬性)。
序
前言
第1章 讓自己熟悉Ruby 1
第1條:理解Ruby中的True 1
第2條:所有對象的值都可能為nil 3
第3條:避免使用Ruby中古怪的Perl風格語法 5
第4條:留神,常量是可變的 8
第5條:留意運行時警告 11
第2章 類、對象和模塊 15
第6條:瞭解Ruby如何構建繼承體係 16
第7條:瞭解super的不同行為 21
第8條:初始化子類時調用super 25
第9條:提防Ruby最棘手的解析 28
第10條:推薦使用Struct而非Hash存儲結構化數據 31
第11條:通過在模塊中嵌入代碼來創建命名空間 34
第12條:理解等價的不同用法 38
第13條:通過"<=>"操作符實現比較和比較模塊 44
第14條:通過protected方法共享私有狀態 48
第15條:優先使用實例變量而非類變量 50
第3章 集閤 54
第16條:在改變作為參數的集閤之前復製它們 55
第17條:使用Array方法將nil及標量對象轉換成數組 58
第18條:考慮使用集閤高效檢查元素的包含性 61
第19條:瞭解如何通過reduce方法摺疊集閤 65
第20條:考慮使用默認哈希值 69
第21條:對集閤優先使用委托而非繼承 73
第4章 異常 79
第22條:使用定製的異常而不是拋齣字符串 79
第23條:捕獲可能的最具體的異常 84
第24條:通過塊和ensure管理資源 87
第25條:通過臨近的end退齣ensure語句 90
第26條:限製retry次數,改變重試頻率並記錄異常信息 94
第27條:throw比raise更適閤用來跳齣作用域 96
第5章 元編程 99
第28條:熟悉Ruby模塊和類的鈎子方法 99
第29條:在類的鈎子方法中執行super方法 105
第30條:推薦使用def?ine_method而非method_missing 107
第31條:瞭解不同類型的eval間的差異 113
第32條:慎用猴子補丁 118
第33條:使用彆名鏈執行被修改的方法 123
第34條:支持多種Proc參數數量 126
第35條:使用模塊前置時請謹慎思考 130
第6章 測試 133
第36條:熟悉單元測試工具MiniTest 133
第37條:熟悉MiniTest的需求測試 137
第38條:使用Mock模擬特定對象 139
第39條:力爭代碼被有效測試過 143
第7章 工具與庫 149
第40條:學會使用Ruby文檔 149
第41條:認識IRB的高級特性 152
第42條:用Bundler管理Gem依賴 155
第43條:為Gem依賴設定版本上限 159
第8章 內存管理與性能 163
第44條:熟悉Ruby的垃圾收集器 163
第45條:用Finalizer構建資源安全網 168
第46條:認識Ruby性能分析工具 171
第47條:避免在循環中使用對象字麵量 177
第48條:考慮記憶化大開銷計算 179
後記 182
學習一門新的編程語言通常需要經過兩個階段。第一階段是學習這門編程語言的語法和結構。如果我們具有其他編程語言的經驗,這個階段通常隻需要很短的時間。以Ruby為例,接觸過其他麵嚮對象語言的程序員對Ruby的語法也會比較熟悉。有經驗的程序員對於語言的結構(如何根據語法構建應用程序)是很熟悉的。
在第二階段則需要更多的努力。這個階段也是你深入語言、學習語言風格的時候,許多編程語言在解決常見的問題時都使用瞭獨一無二的方法,Ruby也不例外。比如循環,Ruby沒有使用顯式循環體來實現,而是使用瞭代碼塊和迭代器模式。學習如何突破思維定勢,用Ruby的方式解決問題是這個階段的精髓。
本書也將緻力於編程語言學習的兩個階段。但本書並不是一本編程語言的入門級書籍。如果你已經完成瞭第一階段,即語法和結構的學習,通過本書你將會對Ruby的理解更加深入和全麵,編寫齣更具可讀性、可維護性的代碼。在這個過程中,我也會介紹Ruby解釋器的內部工作原理,並分享編寫更高效程序的相關知識。
Ruby的不同實現和不同版本如你所知,Ruby有一批非常活躍的社區貢獻者。他們負責各種各樣的項目,其中也包括Ruby解釋器的不同實現。除瞭大傢熟知的Ruby官方實現(MRI),我們也有很多其他的選擇。想把Ruby應用程序部署到已配置Java環境的機器?沒問題,這就是JRuby的用武之地。那Ruby應用程序是否支持智能手機和平闆電腦呢?當然,同樣也有一款相應的實現。
可以選擇的Ruby實現有多種,這也證明瞭Ruby的活躍性。雖然每種的內部實現都不一樣,但對Ruby程序員來說無需太過擔心,因為這些解釋器的行為和官方的MRI很接近。
本書介紹的很多方法在不同Ruby實現上都是通用的,但也有一些隻針對MRI版本,諸如書中提及的垃圾迴收機製。本書中指定Ruby特定版本的時候,都是針對MRI版本的。
書中所有代碼適用於Ruby 1.9.3及其後的版本。在本書編寫時,Ruby最新版本是2.1,Ruby 2.2即將麵世。若書中未提及特定的Ruby版本,則示例代碼可在所有支持的版本上運行。
關於代碼風格的注釋在多數情況下,Ruby程序員喜歡使用單一的風格來格式化Ruby代碼。當代碼沒有按照預定義的風格規則編寫時,一些RubyGem甚至能夠檢測齣這些不一緻的代碼風格並斥責你。之所以提到這件事,是因為本書中示例代碼所采用的風格可能與通常情況下使用的略有不同(也可能與你之前的風格不同)。
當調用一個方法(method)並嚮它傳參時,我使用圓括號把參數括起來,而緊跟在方法名之後,中間沒有空格。在本書之外,我們很容易看到沒有圓括號的方法調用,這可能是由於Ruby傳參時並不需要圓括號。但是,在第1章中我們會看到,不使用圓括號傳參在某些情況下,會導緻代碼多義性,這迫使Ruby猜測你的意圖。由於存在這種多義性,我認為省略掉圓括號是一種不好的編碼習慣,我們需要摒棄這種習慣。
我使用圓括號的另一個原因,是為瞭清晰地錶明一個標識符是方法調用還是關鍵字。你可能會驚訝地發現,你認為的可能是關鍵字的東西實際上是個方法調用(例如require)。而使用圓括號有助於說明這一點。
在這裏討論代碼風格時,我應該指齣,當本書中提及方法時,我會使用RI 標記法。如果你不熟悉RI標記法也沒有關係,因為它很容易學習並很有幫助。它的主要目的是區分類方法(class method)與實例方法(instance method)。當寫類方法時,我會用雙冒號(“::”)放在類名與方法名之間。例如,File::open 是File類中名為open的類方法。同樣,當寫實例方法時,我會用井號(“#”)放在類名與實例方法名之間(例如Array#each)。上述寫法同樣適用於模塊方法(module method)名(例如GC::stat)與模塊實例方法(module instance method)名(例如Enumerable#grep)。本書的第40條建議會涉及RI標記法與使用它查詢方法文檔的更多細節。不過,上述這點入門足以讓你開始本書的旅途瞭。
下載源代碼本書會深入探討很多示例代碼。為瞭更容易理解和消化,代碼通常將會分割成小的代碼片段,我們會一次一小段地進行講解。有些不重要的細節代碼,我們甚至會忽略掉。可以說,有時候一次看完所有的代碼對形成宏觀理解是很不錯的。本書中所有的代碼,可以通過本書的網站下載。
Effective Ruby:改善Ruby程序的48條建議 下載 mobi pdf epub txt 電子書 格式 2024
Effective Ruby:改善Ruby程序的48條建議 下載 mobi epub pdf 電子書書的質量不錯,雖然貴瞭點,5版本的新內容講的有點少瞭
評分書的紙質還不錯,應該是正版
評分我的第二本ruby書!非常經典的ruby參考讀物,是ruby社區得設計模式。元編程是ruby的精華
評分非常經典的ruby書籍,必讀!五星
評分經典書籍,值得一讀,同事強烈推薦的。一次買瞭好多,今年不用買書瞭
評分這本書就很好看瞭,它可以幫助搞懂,非常非常多我不懂的代碼,希望大傢有空也看一下。
評分書不錯,京東值得信賴,繼續支持
評分翻瞭幾頁 感覺還不錯呀 幫彆人買的
評分新換瞭一本,還可以,c++是世界上最好的語言。
Effective Ruby:改善Ruby程序的48條建議 mobi epub pdf txt 電子書 格式下載 2024