如果你是經驗豐富的Ruby程式設計師,《Effective Ruby 中文版》將會協助你利用Ruby所有威力編寫出更穩固、更有效率、更容易維護、執行更順暢的程式碼。藉由近十年的Ruby經驗,Peter J. Jones匯集了48項Ruby的最佳作法、專家建議以及捷徑,並提供實際可行的程式範例作為後盾。
% B$ v6 |* Y* W# }8 ^# M- y# ]1 v Jones針對Ruby開發的每一項主題,從模組到記憶體到後設程式設計(metaprogramming)都提供了實用的建議;他揭開了鮮為人知的慣用語法、怪癖、陷阱以及強力影響程式碼行為與效能的複雜關係。6 w( r$ ?8 F: Y6 L
每一樣具體做法除了包含具體、有所作為、清楚明確的組織準則,也都有周延的建議和詳細的技術論證以及極富啟發的程式範例。如果同時存在多種選擇,Jones會告訴你該如何針對你的情況從中選擇運作最好的一個。
9 \) j7 i3 @- x2 f4 U! X7 | 《Effective Ruby 中文版》將協助你有條不紊的改善你自己的程式碼,不是盲從規則,而是透過徹底瞭解的Ruby程式設計技巧。
$ M7 X! u4 j6 W) W$ J0 p" u) L$ [ 目錄2 l" c/ N8 U7 i8 K8 H
推薦序- h' `4 w! m H" _& N) w" s' H
自序
5 @/ b$ n% R- W& W& l+ n8 [ 致謝
' [$ j+ `# |: a 關於作者% Y& Z; B& X5 b0 S P
第1 章 讓自己習慣Ruby2 F: ^; C. m# Z
做法01 瞭解Ruby 所謂的真/ r( U, G3 S# B1 @, y% l
做法02 將所有的物件視為nil$ M2 H8 U/ o+ G& Q; k
做法03 避開隱秘的Perl 主義6 j7 Y& Q, N2 y6 G
做法04 留意常數並非固定不變! V3 t3 Q/ o% r r: B0 O. s2 q2 Z
做法05 留意執行階段的警告; k1 h+ T- E, L" _
第2 章 類別、物件、模組
8 A; D1 ]1 ~6 \& Z0 R 做法06 瞭解Ruby 如何建置繼承階層
- @* f5 Z6 l E2 X/ ] 做法07 留意super 的不同行為
, `( O: ?( k m+ M$ F 做法08 初始子類別時叫用super
7 s0 i- `8 d0 G5 @6 }. v 做法09 請留意最為之氣結的解析1 N: P0 m! j% ~9 Y( g+ A
做法10 結構化資料應該用Struct 而非Hash
7 [) {! }5 h9 n 做法11 在模組裡以巢狀程式碼建立命名空間
b6 ]/ |* ^# I+ A7 k7 I 做法12 瞭解等號不同的用法
$ G8 H$ U7 k: q& Z 做法13 以<=> 和可比較的模組實作比較運算
2 ~6 ~5 b: j. P: B 做法14 透過受保護方法共用私用狀態; ]: I2 s. S b4 g2 @' X
做法15 寧用類別實體變數也不要類別變數+ c: F7 P2 f+ |: @) T( E9 u
第3 章 集合
; V$ f8 e& p4 n/ {' v$ q3 L 做法16 當作引數傳遞的集合在發生變化之前先行複製0 j7 V- {% f% r- e( Y, y8 p# U
做法17 以Array 方法將nil 和純量物件轉換成陣列2 b* Q8 X( n& x; e6 _! |
做法18 有效率的元素包含檢查應該考慮Set8 W+ p3 ], ]8 z2 J# F! W; U4 _
做法19 如何以reduce 收合集合4 w8 O2 F& L: @) C; u+ U
做法20 考慮使用預設的Hash 值
' k# H. `( t# c; k 做法21 寧用委派也不要從集合類別繼承9 ?2 M4 }3 b& C _$ _
第4 章 例外
0 i8 |2 Y' y8 r% ~ 做法22 寧用自訂例外也不要引發字串# v# L' M0 \- V( t
做法23 解救最明確的例外可能+ f( |9 g8 r% q+ f
做法24 以區塊和ensure 管理資源9 ?$ q! _$ O) `6 }% c1 E: \( H$ A
做法25 以流程結束離開ensure 子句
3 n: `/ y& \, ^& o1 E& U 做法26 限定retry 次數,修改其頻率並保持稽核追蹤2 l$ F5 ~! t2 k5 ]9 b1 P, _2 O- i
做法27 寧以throw 跳離範圍,也別使用raise
+ L; u0 B9 a: H' z$ R- O 第5 章 後設程式設計
; V1 U1 z& m' J" j$ B 做法28 熟悉模組和類別勾點
8 ^4 d" `* w4 T3 C 做法29 從類別勾點內部叫用super, A( v) @/ `: A$ o$ F# o
做法30 寧用define_method 也不要使用method_missing0 L3 o0 @2 [) Y) f( `7 c" \1 N
做法31 瞭解各種eval 之間的差異
5 c. f$ m0 [# z \9 r1 }* H 做法32 思考猴子修補的替代方案
" I* p( H. ?) e, M 做法33 以別名鏈結叫用更改過的方法+ O$ t7 c; @' m7 r9 j
做法34 支援Proc 不同的引數數目) B8 V& O: |3 z/ Q* U- G) }# d2 h7 C
做法35 使用模組前置之前請謹慎思考
$ L3 M9 \3 ^; Z% g, u 第6 章 測試7 \6 @% h1 I0 y( b) t" T
做法36 你應該熟悉MiniTest 單元測試
$ Q; U# f+ o" o3 s 做法37 你應該熟悉MiniTest 規格測試
; ^8 u, V" p4 n; q 做法38 以mock 物件模擬determinism6 D5 ?+ P5 V6 h, G% M% N
做法39 測試程式碼務必要有效率- s4 I( ~0 h( `: J! P
第7 章 工具和程式庫' n$ F& e# P/ w& @2 W$ ]
做法40 瞭解如何使用Ruby 文件
+ Y8 y, ?; b K/ K# t1 b: _: M 做法41 留意IRB 的進階功能- Y* S( |0 b3 @' S
做法42 以Bundler 管理Gem 的相依性
4 S" q$ F( l2 N2 S7 z9 e. z, l0 A 做法43 指定Gem 相依性的上限 D* ]4 {# g6 l5 a
第8 章 記憶體管理和效能 z; b+ @- J; K2 m% q
做法44 熟悉Ruby 的記憶體回收器8 J2 P( l! c3 \7 B4 n
做法45 以終結式建立資源安全措施
; ?1 [% P* ], i% W 做法46 留意Ruby 的剖析工具
( U9 c# o) B$ M W+ } 做法47 避免在迴圈使用物件常值3 r7 W! S: w, K# @& ?/ _
做法48 工程浩大的運算請考慮備忘法
* ?/ M( P/ A: n E 結語
$ s/ P: p+ @) z/ {: [0 {( N游客,本下载内容需要支付 6共享币,购买后显示下载链接立即支付
$ Y9 z7 q. G! _# J
5 u/ u" C. m8 C- T4 s3 O" K |