Please enable JavaScript.
Coggle requires JavaScript to display documents.
组件化 - Coggle Diagram
组件化
代码可测性
高可测代码原则
面向协议而不是面向实现
初始化函数不要有逻辑代码
传入依赖而不是创建依赖
避免链式调用(意味着更多耦合)
单一职责
避免使用单例
小心使用静态方法
函数无副作用
函数的输出仅依赖输入
测试代码的坏味道
一个函数包含太多测试用例
为了测试而提升访问权限
setup、teardown含太多逻辑
重复的测试代码
改动一处业务代码需要改动多处测试代码
测试用例并行执行时随机失败
用例运行耗时过长
调换用例顺序导致测试失败
测试用例设计原则
基于意图而不是基于实现
简单、清晰、易懂
避免引入条件判断、循环
测试用例完备而不重复
正面测试
负面测试
边界测试
使用assert进行验证
不只追求覆盖率
边测试边重构
如何提高代码可测性
重构
微观层面
单一职责,一个函数只干一件事情
如果依赖是必要的,尽量依赖协议而不是依赖实现
无重复代码
复杂度
函数不能有太多参数
嵌套不能太深
函数不能太长
类不能有太多方法
switch不能有太多case
慎用全局变量,会产生各种副作用
慎用继承,继承能够提供良好的复用性,便于实现多态,但也会造成对父类的强耦合。如果可以,使用组合替代继承。
不要有纯数据的类,而要把数据和行为封装在一起
顶层设计
易用性
能否做成系统类的扩展,像使用系统类一样
使用者不需要了解系统的内部实现
对外暴露尽量少的类,类暴露尽量少的方法
扩展性
预判一下未来可能需要扩展哪些能力?
如果要扩展能力,是否会修改到现有的代码?能否做到只扩展不修改?
清晰的分层
没有分层的架构,最终会导致炒面般的依赖关系
应当做到上层对下层的单向依赖