重构 - 读书笔记
#读书笔记# Encapsulate Collection(封装群集)关键是分别建一个add和remove群集元素的函数,并将get封装为readonly。否则,使用群集的客户端偷偷改变了元素,群集拥有者却一无所悉。C#中可用类ReadOnlyCollection或方法AsReadOnly()实现。http://stackoverflow.com/questions/1710902/unmodifiable-lists-in-c
#读书笔记#assertion(断言)的价值在于:帮助程序员理解代码正确运行的必要条件。
#读书笔记#我们常常会写下这样的判断“if (customer == null) xxxx”,当中的判断条件可能会在多处重复出现,这时我们可以运用Introduce Null Object(引入null对象)新建一个Null Customer类继承原Customer类,并将判断条件集中在获取Customer的地方,结合多态就能去掉那些相同的判断条件。详见P260。
#读书笔记#Remove Control Flag(移除控制标记)是Fowler大师反对“单一出口”原则的经典阐述。他认为该原则会让你的代码中加入讨厌的控制标记,大大降低条件表达式的可读性。他建议“以break语句、continue语句、或return语句取代控制标记”。
#读书笔记#终于看到向往已久的Introduce Parameter Object(引入参数对象),当某些参数总是很自然地同时出现时,“以一个对象取代这些参数”。当你把这些参数组织到一起之后,往往很快可以发现一些“可被移至新建Class”的行为,P295。
#读书笔记#代码的可理解性应该是我们虔诚追求的目标。
#读书笔记#如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常被称为“卫语句(guard clauses)”。Replace Nested Conditional with Guard Clauses的精髓就是:给某一分支以特别的重视。如果使用if-then-else结构,你对if分支和else分支的重视是同等的。
#读书笔记# MVC模式的最核心价值在于:它将用户界面代码(即所谓view,视图;亦即现今常说的presentation,表述)和领域逻辑(即所谓model,模型)分离了。presentation class只含用以处理用户界面的逻辑;domain class不含任何与程序外观相关的代码,只含业务逻辑(business logic)相关代码。
#好书推荐#《重构》福勒 (Martin Fowler) 侯捷、 熊节译。下载地址:http://ishare.iask.sina.com.cn/f/5597581.html #读后感#几十种行之有效的重构方法介绍与演练,贴近实际,确如序言所说,看完这本书,其中的思想应该成为你血液中的一份子,而设计模式应该成为你桌上随时查阅的工具书。