刚买的冬枣:对象健身操

来源:百度文库 编辑:中财网 时间:2024/04/29 01:47:53
看了一下ThoughtWorks文集中的对象健身操一章,写了九部迈向优秀的设计,记录一下:
1、方法只使用一级缩进
这个可以尽可能的写更小的方法。

2、拒绝使用else
这个可以避免if...else条件的深层嵌套,让代码更加清晰。

3、封装所有的原生类型和字符串
将原生的类型封装称为有意义的类型,比如表示几点的int类型值,可以封装成Hour,
这样更加清晰,提高代码的可维护性。

4、一行代码只有一个“.”运算符
这个可以减少对象细节的暴露。书中主要举了一个内部类,并暴露了内部的数据成员的
例子。构建DSL,经常操作之后返回自身,使用多个“.”不在此列。

5、不要使用缩写。
不使用缩写的好处不光是使得代码更加清晰易懂(《clean code》也有此建议),
并且由于使用全拼名字的增长,会让你思考(比如方法)是否该方法只干了一件事情。

6、保持实体对象简单清晰。
每个类的长度不超过50行,每个包包含的类不超过10个。这会让类和包具有更高的内聚性,
让包足够小,就能够让他们有一个真正的标示。

7、任何类的实例变量不超过两个。
大多数类应该只负责单一的状态量,有时候可以有两个状态量。每当为类添加一个实例变量
时就会降低类的内聚性。这样就会只出现两种类:一个是只维护一个实例变量的状态;
另一个是只负责协调两个独立的变量。

8、使用first class的集合
任何包含集合的类都不再包含其他的成员变量。每个集合都封装在自己的类中,这样与
集合相关的行为就有了自己的窝。比如作用于集合的过滤器可能成为类的一部分,或者
根据他们自身的情况包装成函数对象,或者对集合的元素逐个施加某种规则。

9、不使用任何的Getter/Setter/Property
这条规则也被描述为讲述而不是询问(Tell,don't talk).
如果从对象之外询问实例变量的值,那么行为和数据就不可能被封装一处了。在严格的封装
边界背后,真正的动机是迫使程序员在完成编码之后,一定要为这段代码的行为找到一个适当的位置,确保在对象模型的唯一性。