当设计一个新类时,从调用者(caller)的角度来看类的设计是很有帮助的:
- 由于会有更多的用例(use case)反馈, 最终的设计质量会更好
- 通常会使错误的设计发现的更早,这就意味着能更快的设计好
大多数设计可以简单概括为下面几步:
- 做做好的假设(Make your best guess)
- 发现并修正错误
- 重复1.2.
第2步看起来是个关键步骤。错误发现得越早越好,在这方面看来,从外到里(from the outside in)设计做的很好。
设计类主要是公有方法的设计,由外至内(from out side in)的添加一个非私有方法大约有下面几步:
1. 从调用者(caller)的角度写一些用例代码
2. 通过添加一个简单的桩(stub)方法,使上面的代码编译通过。例如,如果该方法返回值为void, 桩(stub)就是一个简单的空方法,
如果是返回一个值,则桩(stub)只需简单的返回null,0,false或空字符串,等等即可。
3. 这样,由于调用代码很少,尝试不同的设计就很简单了。
4. 根据调用者的角度决定方法名和返回值
5. 根据方法本身的实现需要(而不是调用者)来决定方法所需的参数
6. 确定返回值是否准确,这一点很重要,因为改动返回值会很大的隐响调用方代码。
7. 调用该方法是否很容易让人理解?
8. 当设计趋于稳定时,可给该方法些javadoc作为该方法和调用方的正式协议。通常,这会帮助我们说明细节和边界条件
9. 实现该方法,并测试