Loading

2:c#教程-重构

问题:
1. 重复代码
2. 过长的函数(过百行的函数需要拆分)=> 把一个大功能分解为几个小功能
3. 乱其名字,无意义
4. 过大的类 => 每个类应有明确的职责
=> 处理方式:一个类拆分为多个相互的类;采用继承方法,把一些公有代码移到基类中
5. 过多的参数 => 改传送参数为传递对象
6. 链式反应
- 一个变化引发多个Class修改:类之间的耦合性太强
- 一个Class受多个外部因素的影响:类实现的功能太多
7. 曝光隐私,滥用public

查看 加密和解密组件(DES,RSA算法完成这些功能)源码,看看设计者如何项使用者隐藏这些算法细节

处理“神奇数字(magic number)

  • 使用命名常量来代替具体的数字

if的判断条件太长

  • 使用独立返回bool值的函数来代替复杂的逻辑表达式

嵌套过深的条件语句=>降低嵌套层次

把逻辑上密切相关的功能代码抽取为独立的函数=>方法抽取

防卫式编程

一个函数要想正确运行,一定要有对应的前提条件,因此,在函数开头应当对这些前提条件进行检测

合并 => 通过增加参数合并功能类似的代码 => 何时合并
分解 => 将依赖于参数值采取不同行为的函数分解为几个功能明确的函数 ==> 何时分解
使用组合来代替继承

单元测试

  • 黑盒
  • 白盒
    Arrange => Act => Asse t
  1. 功能性测试
    单元测试=>功能测试=>集成测试=>场景测试=>系统测试=>外部软件测试人员

  2. 非功能性测试
    压力/负载测试、效能测试、辅助功能测试(向残疾用户提供帮助)、本地化/全球化测试、兼容性测试、配置测试、软件安全性测试

  3. 其他类型的测试
    冒烟测试(测试若不通过,则不进行下一步)、构建测试、验收测试(全面)、随机测试、回归测试、找bug、伙伴测试

posted @ 2025-03-12 22:26  一起滚月球  阅读(12)  评论(0)    收藏  举报