2:c#教程-重构
问题:
1. 重复代码
2. 过长的函数(过百行的函数需要拆分)=> 把一个大功能分解为几个小功能
3. 乱其名字,无意义
4. 过大的类 => 每个类应有明确的职责
=> 处理方式:一个类拆分为多个相互的类;采用继承方法,把一些公有代码移到基类中
5. 过多的参数 => 改传送参数为传递对象
6. 链式反应
- 一个变化引发多个Class修改:类之间的耦合性太强
- 一个Class受多个外部因素的影响:类实现的功能太多
7. 曝光隐私,滥用public
查看 加密和解密组件(DES,RSA算法完成这些功能)源码,看看设计者如何项使用者隐藏这些算法细节
处理“神奇数字(magic number)
- 使用命名常量来代替具体的数字
if的判断条件太长
- 使用独立返回bool值的函数来代替复杂的逻辑表达式
嵌套过深的条件语句=>降低嵌套层次
把逻辑上密切相关的功能代码抽取为独立的函数=>方法抽取
防卫式编程
一个函数要想正确运行,一定要有对应的前提条件,因此,在函数开头应当对这些前提条件进行检测
合并 => 通过增加参数合并功能类似的代码 => 何时合并
分解 => 将依赖于参数值采取不同行为的函数分解为几个功能明确的函数 ==> 何时分解
使用组合来代替继承
单元测试
- 黑盒
- 白盒
Arrange => Act => Asse t
-
功能性测试
单元测试=>功能测试=>集成测试=>场景测试=>系统测试=>外部软件测试人员 -
非功能性测试
压力/负载测试、效能测试、辅助功能测试(向残疾用户提供帮助)、本地化/全球化测试、兼容性测试、配置测试、软件安全性测试 -
其他类型的测试
冒烟测试(测试若不通过,则不进行下一步)、构建测试、验收测试(全面)、随机测试、回归测试、找bug、伙伴测试

浙公网安备 33010602011771号