由外之内的创建类(Construct classes from the outside in)
2015-10-26 20:59
369 查看
当设计一个新类时,从调用者(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. 实现该方法,并测试
由于会有更多的用例(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. 实现该方法,并测试
相关文章推荐
- [240]Search a 2D Matrix II
- hdu 4605 Magic Ball Game(可持久化笛卡尔树)
- 关于iphone accessory的理解
- HDU-2159(FATE)
- 设计模式------工厂方法模式
- hibernate.hbm2ddl.auto配置详解
- 论架构师的自我修养
- 第一次驱动hello
- 机器学习中防止过拟合的处理方法
- Could not load file or assembly 'XXX' or one of its dependencies
- C++:多重继承
- oracle dba 使用mysql 时的痛点--待吐槽
- Android 理解生命周期最好例子—按home暂停音乐播放,跳转暂停
- 对称矩阵的压缩存储及基本运算(2)
- VS2013在文件中查找时无法显示查找结果
- 76 Minimum Window Substring
- 天声人語 20151026 「政治的」なものの忌避
- nginx之反向代理
- socket网络编程复习笔记(三):套接字描述符背后的秘密
- window 对象