15回答

0收藏

重构 改善既有代码的设计 Java语言版 PDF 电子书

电子书 电子书 1905 人阅读 | 15 人回复 | 2023-09-01

Java电子书:重构 改善既有代码的设计 Java语言版 PDF 电子书 Java吧 java8.com% O. Q/ w2 a0 C; p* g: U
/ z/ F1 @# f$ e- s3 ^, b
作者:[美]Martin Fowler 著,熊节 译出版社:人民邮电出版社出版时间:2015年08月 : A2 S% O, |1 s

$ K# x7 v' }$ l4 {- B- D: a9 \- v
0 e4 x+ d: g" w+ l
编号:166-Java吧资源免费-P009【Java吧 java8.com】6 L0 I1 |8 b# [
) X! \; o: u) g1 S2 g6 J
" M& v) _; G" c: `, ^; u
6 l) `/ O' a0 c! i- l/ X) l  s
目录:第1章 重构,个案例
! ^1 ?2 K! o7 H0 \6 g  [: p1.1 起点 & A6 d: p, n, f. d# ]3 R$ K
1.2 重构的步 , m( v1 ]- w' L% ~8 ^& L% B
1.3 分解并重组statement()
6 E% _. U2 y  z4 G% k# ^1.4 运用多态取代与价格相关的条件逻辑 ' W9 a' B2 b" q
1.5 结语 " S0 g6 a5 M1 [3 @
第2章 重构原则
' @4 m* m8 v" g0 p# U: k2.1 何谓重构 " m, Z& @2 ^3 Z$ }% h! m$ t# `
2.2 为何重构 ( |9 h' V: }- S4 m
2.3 何时重构
6 Y- k- k: d5 q. h5 b2.4 怎么对经理说 ; {) f: S& S+ {5 u0 L( A
2.5 重构的难题
% j0 O; {" s( [2.6 重构与设计 ) B: ^3 i6 X$ y2 {
2.7 重构与性能
6 m7 e5 u( o/ {0 I; s9 }2.8 重构起源何处
3 n4 V6 o6 S5 e8 i4 z0 K第3章 代码的坏味道
8 b6 z! P5 s% W8 N# g3.1 Duplicated Code(重复代码) 1 l$ V) M" M. s' a! F
3.2 Long Method(过长函数)
  N: ~" A# b# r$ D* @/ g! d0 `3.3 Large Class(过大的类)
  G! T' k1 k3 \) O3.4 Long Parameter List(过长参数列) 8 W0 [- k, i( I3 U1 J( v8 S
3.5 Divergent Change(发散式变化) 2 z# E6 \: P& ?' [! k
3.6 Shotgun Surgery(霰弹式修改) ; s7 W. I# u, y' O+ w1 O! L
3.7 Feature Envy(依恋情结) ' w6 P, Z: n% `
3.8 Data Clumps(数据泥团) 8 I) N, [9 J4 |$ b+ c& t/ |1 X
3.9 Primitive Obsession(基本类型偏执)
* X+ X2 W4 M2 z( A: l3.10 Switch Statements(switch惊悚现身) ' B1 g0 w' L$ L$ k& L3 }: f) y
3.11 Parallel InheritanceHierarchies(平行继承体系) ! k1 z! f7 g: \& a2 |
3.12 Lazy Class(冗赘类) % P* B( x& ?: ?& ]! H9 Q' c
3.13 Speculative Generality(夸夸其谈未来性)
( j7 c7 J4 f+ J3.14 Temporary Field(令人迷惑的暂时字段) 0 N# n* x7 O; f% ~0 l3 A
3.15 Message Chains(过度耦合的消息链)
. d8 {1 {5 z( u/ w4 b2 [* j3.16 Middle Man(中间人)
) |  x; `: ^& o# G* N! L3.17 Inappropriate Intimacy(狎昵关系)
$ N% C/ R( n) B- ^% M" V- p3.18 Alternative Classes with Different Interfaces(异曲同工的类)
  F, d) D* h" ?. F; x3.19 Incomplete Library Class(不完美的库类)
  H) V+ `$ e! {8 ~0 l3.20 Data Class(纯稚的数据类) + G$ w( j' c5 ^. f
3.21 Refused Bequest(被拒绝的遗赠)
1 L& p6 {. v  f+ ]: \( G3.22 Comments(过多的注释) * U7 u' j7 z3 S  X# M5 Z
第4章 构筑测试体系 0 B" ?; E) v4 l) [, B. ?8 h; q7 m& B
4.1 自测试代码的价值 4 n* s5 B3 \" @$ d
4.2 JUnit测试框架 % `; X7 T/ O+ Y% c! E: w# _
4.3 添加更多测试
! J4 ~8 t* |+ N. P/ `7 E第5章 重构列表 ! o/ N) L9 q" t/ M
5.1 重构的记录格式 % F: l3 M1 y  W& N* i( M" Y
5.2 寻找引用点 1 e  A6 B! M' Z0 e5 M
5.3 这些重构手法有多成熟
/ a! J" |: G2 _  v9 W* s: j! g第6章 重新组织函数
* k& ?9 J5 Z* |8 u: ?6.1 Extract Method(提炼函数) ( v* T9 H2 @" m- O- l. E. B# S
6.2 Inline Method(内联函数) ' \& Z# G7 E0 b, H# x. z
6.3 Inline Temp(内联临时变量)
. M4 F: t; s" _9 Q- }6.4 Replace Temp with Query(以查询取代临时变量)
2 C$ x0 N  Q% B" O  _6.5 Introduce Explaining Variable(引入解释性变量)
% F. |( w' m4 f' |) M9 x; W6.6 Split Temporary Variable(分解临时变量)
0 i9 I# ^. ]! u, @( O, H6.7 Remove Assignments to Parameters(移除对参数的赋值) 6 L) `8 p% {% H( H+ }
6.8 Replace Method with Method Object(以函数对象取代函数)
2 l2 H/ A/ H& ]4 s6.9 Substitute Algorithm(替换算法) * S( k9 _& [! k
第7章 在对象之间搬移特性
+ \8 g6 A1 D$ C1 }' [7.1 Move Method(搬移函数) ( x0 b( L, A4 `- a0 P7 C
7.2 Move Field(搬移字段)
$ o* {% V  ?9 K7.3 Extract Class(提炼类) 0 }: f2 T5 W5 M, L) ?( s7 r
7.4 Inline Class(将类内联化) : v! p* j" l0 V: [7 R: Y$ U
7.5 Hide Delegate(隐藏“委托关系”)
& b$ g6 ^7 W6 W& U3 t6 T4 w# T& R7.6 Remove Middle Man(移除中间人) * w, F! C1 I$ C. P8 l8 P
7.7 Introduce Foreign Method(引入外加函数)
8 o# F& i$ e3 a5 `* T* j0 i( r7.8 Introduce Local Extension(引入本地扩展)
; {7 h  Y$ q4 ?6 s5 \& w% [1 X第8章 重新组织数据
( H: R: X/ [4 P2 F4 Q' V# F$ ^8.1 Self Encapsulate Field(自封装字段) # C1 y, Y' p3 }  D7 C$ m: j) K
8.2 Replace Data Value with Object(以对象取代数据值) % _2 W5 Y4 D; w- x% l8 Z. m
8.3 Change Value to Reference(将值对象改为引用对象)
. w" M* M: b: g2 v; l8.4 Change Reference to Value(将引用对象改为值对象) - }1 I! @. Q9 X( N) h. `
8.5 Replace Array with Object(以对象取代数组)
+ ^- B1 O" y, t$ T4 A8.6 Duplicate Observed Data(复制“被监视数据”)
8 Y* o3 j3 l) c2 V8.7 Change Unidirectional Association to Bidirectional(将单向关联改为双向关联)
6 H0 I5 N* X0 r! n, Z/ U8.8 Change Bidirectional Association to Unidirectional(将双向关联改为单向关联) " R( H6 \+ ^, `5 S$ H: Z
8.9 Replace Magic Number with Symbolic Constant(以字面常量取代魔法数) ( [- Q: u7 X/ [: Y# Y
8.10 Encapsulate Field(封装字段)
/ T5 Z# `( L* n3 Z; e8.11 Encapsulate Collection(封装集合) % z: U6 T, E% [3 B2 V- \2 B
8.12 Replace Record with Data Class(以数据类取代记录) & G  }9 Q6 b* x; w7 R
8.13 Replace Type Code with Class(以类取代类型码) 7 @7 B4 n: b0 N( ]/ X
8.14 Replace Type Code with Subclasses(以子类取代类型码)
. r. t% \! b& X. o. ~% ]8.15 Replace Type Code with State/Strategy(以State/Strategy取代类型码) 5 c6 z, i) O5 H! K3 c
8.16 Replace Subclass with Fields(以字段取代子类) ) w& @$ e& f# [0 }% w
第9章 简化条件表达式
, D# S, R' j) j" L. `+ p8 A9.1 Decompose Conditional(分解条件表达式) : t. o8 F0 S, j( k. z  O+ |
9.2 Consolidate Conditional Expression(合并条件表达式) 1 w' [5 j; p! l5 d! L
9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9 ?' o( `& C; Z2 i+ V/ X6 T
9.4 Remove Control Flag(移除控制标记)
7 y, K9 u9 _% y: T9.5 Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式)
* u' l$ |% v  Y9.6 Replace Conditional with Polymorphism(以多态取代条件表达式)
2 a3 C1 i( n% }: U2 I  c3 y9.7 Introduce Null Object(引入Null对象) " Q3 R2 ^3 @! n5 c, e
9.8 Introduce Assertion(引入断言) % w" w9 m9 _9 h$ j9 E  y
第10章 简化函数调用
# B& J- a; j6 X" q7 z2 f10.1 Rename Method(函数改名)
% H7 b0 A* |0 ?% C" X5 S& Q0 }10.2 Add Parameter(添加参数)
+ C; V* g" |- m! c4 X1 m10.3 Remove Parameter(移除参数)
9 U" ]9 a( {. Y2 M  E10.4 Separate Query from Modifier(将查询函数和修改函数分离)
- f% C* B$ F; I7 a- w2 d! w10.5 Parameterize Method(令函数携带参数)
* y# M# m4 j/ t! Q; I10.6 Replace Parameter with Explicit Methods(以明确函数取代参数) 0 n# L& p. d" b" H
10.7 Preserve Whole Object(保持对象完整) 2 N6 ^' R$ G& w3 h
10.8 Replace Parameter with Methods(以函数取代参数) ) `, [! h0 w& o1 ~8 W. \
10.9 Introduce Parameter Object(引入参数对象)
3 Z/ _8 I$ w. T* e3 u4 ^8 o3 ?2 a10.10 Remove Setting Method(移除设值函数) ; n4 d) ~- {" M) j
10.11 Hide Method(隐藏函数) # R- _: m/ r8 r3 j+ i/ e# N, U
10.12 Replace Constructor with Factory Method(以工厂函数取代构造函数)   X& w9 A1 z' ]& l% G
10.13 Encapsulate Downcast(封装向下转型)
' ~. |; K9 ?: ~, w" T; Z6 f; X10.14 Replace Error Code with Exception(以异常取代错误码) . @( ~1 Y: n& q* H
10.15 Replace Exception with Test(以测试取代异常)
! \' |2 U' f+ V& w% @8 W  H第11章 处理概括关系 $ h- ?: F/ g5 V1 J" t$ K4 N
11.1 Pull Up Field(字段上移)
" z& k5 o) K8 \& W2 d: N2 D; J8 S11.2 Pull Up Method(函数上移)
6 M/ M1 T2 Z8 p2 i5 J: C11.3 Pull Up Constructor Body(构造函数本体上移) * G2 X5 F8 x% B: Q
11.4 Push Down Method(函数下移)
) S8 B! r! U6 t1 Y# {11.5 Push Down Field(字段下移) 6 u8 ~7 {) x! ^9 J2 [2 h( `- m
11.6 Extract Subclass(提炼子类)
) S0 f) v  w; S* l* v11.7 Extract Superclass(提炼超类)
" |" g( W7 C+ F$ c0 [$ Q5 \11.8 Extract Interface(提炼接口)   g. {; Z# [! b, p: u  J
11.9 Collapse Hierarchy(折叠继承体系) 6 P, S# G4 K: ^& u
11.10 Form Tem Plate Method(塑造模板函数)   W5 z6 m9 j9 `$ A4 j" C# j
11.11 Replace Inheritance with Delegation(以委托取代继承) / ~7 h7 @! R: G$ Y- z2 @
11.12 Replace Delegation with Inheritance(以继承取代委托)
( W% T5 N! J. g, w0 x; d第12章 大型重构 * N7 r& B) _6 k& I# \$ {. w
12.1 Tease Apart Inheritance(梳理并分解继承体系)
5 w- p3 J/ F) W. o% b: t7 t/ x12.2 Convert Procedural Design to Objects(将过程化设计转化为对象设计)
. w- |4 Q, Q" T; R4 a  a9 X12.3 Separate Domain from Presentation(将领域和表述/显示分离)
5 P- R5 i+ ~+ i8 h* y12.4 Extract Hierarchy(提炼继承体系) 7 s; ^# N+ G' D; i# m5 ~
第13章 重构,复用与现实
& @) `! D, ~1 U8 j7 n( s13.1 现实的检验
+ Q4 T: l: l/ u8 w* N13.2 为什么开发者不愿意重构他们的程序
6 i0 S9 v3 e7 Z# [13.3 再论现实的检验 - d( d0 }) h$ D' n  B
13.4 重构的资源和参考资料
3 M& t* [- s. ^13.5 从重构联想到软件复用和技术传播 ' f; a" I4 I" ~- M
13.6 小结 . e9 D1 P, v7 a
13.7 参考文献
% r+ G2 C' }  \: H9 A( W第14章 重构工具
" G4 G2 ^$ U: L1 n6 f14.1 使用工具进行重构 7 _! i) q% w7 b! D* q5 a
14.2 重构工具的技术标准
( E# q5 l5 V6 e* ?7 H/ [14.3 重构工具的实用标准
% u, ?: I, D- i2 [# T14.4 小结
9 n) ]# {& g! O( U9 ?第15章 总结
" p9 o4 D. I$ H( f! b2 _参考书目 + [* b  \5 Q5 u! r) \
要点列表 % q. Y  Z9 k( W9 h9 H. D
索引
+ U4 K5 ]& L, m9 ^1 _$ j+ M1 ^7 x9 A2 I, q& c
百度云盘下载地址(完全免费-绝无套路):
游客,如果您要查看本帖隐藏内容请回复

! S  W$ t" _$ }" {( T8 r

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
关注下面的标签,发现更多相似文章
分享到:

回答|共 15 个

璀璨星河

发表于 2023-9-22 15:07:15 | 显示全部楼层

不错,好资源

仓茎空

发表于 2023-9-22 17:46:48 | 显示全部楼层

我又来了 白漂开始

踌躇那份真情

发表于 2023-9-25 11:08:31 | 显示全部楼层

我又来了 白漂开始

潇洒小老头儿

发表于 2023-9-26 16:21:47 | 显示全部楼层

资料免费 给力

老花猫

发表于 2023-9-26 23:34:12 | 显示全部楼层

good 白漂啦

小頋先生就是我

发表于 2023-9-27 09:22:23 | 显示全部楼层

免费下载的网站 头一次遇到 不错

高小球

发表于 2023-9-27 14:47:32 | 显示全部楼层

白漂来了

坏习惯

发表于 2023-9-27 18:13:26 | 显示全部楼层

免费下载的网站 头一次遇到 不错

铁笛长

发表于 2023-9-28 14:44:05 | 显示全部楼层

资料免费 给力
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则