- 数量尽可能少
- 与技术无关
- 易于测量
- 与实际的企业软件比较
一个系统可被修改的难易程度
- 可维护性
- 功能可适性
- 性能效率
- 兼容性
- 可使用性
- 可靠性
- 安全性
- 可移植性
- 发现并修复bug
- 适应操作环境的改变
- 系统用户新的需求
- 预防
- 简单的原则有利于提高可维护性
- 项目开发一开始就应该考虑
- 越遵守原则,维护性越高
- 代码单元的长度应该限制在15行以内
- 什么是代码单元
- 易于测试
- 易于分析
- 易于调用
- 分散后难以阅读
- 过短有不当的格式化
- 代码不能再分了
- 拆分没有带来明显的好处
- 限制每个代码单元分支点的数量不超过4个
- 易于修改
- 易于测试
- 复杂度不可避免
- 拆分方法不见得降低复杂度
- 编写通用的可复制的代码,或者调用自己的代码
- 至少6行都相同的代码
- 重复代码难以分析
- 难以修改
- 提取父类的重构技巧
- 应该允许从其他代码库中复制代码
- 细微修改的重复代码是不可避免的
- 这些代码永远不会变化
- 考伯多分文档相当于多了一个备份
- 单元测试会帮我发现问题
- 字符串文本的重复是不可避免的
- 限制每个代码单元的参数不超过4个
- 将多个参数提取成对象
- 短接口更易于理解和重用
- 已与修改
- 构造参数对象过于复杂
- 构造长接口并没有带来任何改善
- 一些框架库已经规定了长参数列表的接口
- 小型、松耦合的模块允许开发人员独立进行工作
- 降低了浏览代码的难度
- 避免让新人手足无措
- 根据不同关注点拆分类
- 隐藏接口背后的特定实现
- 使用第三方库、框架替换自定义代码
- 松耦合与代码调用冲突
- C#接口不适合松耦合
- 对工具类的高难度使用是不可避免的
- 不是所有的松耦合都会增加可维护性
- 低组件依赖允许独立的维护
- 可以分离维护职责
- 易于测试
- 抽象工厂设计模式
- 因为组件之间是相互依赖的
- 没时间修复组件依赖
- 透传代码来自于需求透传
- 保持源代码中组件的数量接近于9
- 易于查找分析
- 隔离维护带来的影响
- 分离维护职责
- 确定将功能合成组件的合适原则
- 明确系统的领域并坚持下去
- 组件不平衡没影响
- 组件之间的平衡会降低平衡度
- 容易成功
- 易维护
- 缺陷少
- 控制需求蔓延
- 功能标准化
- 不复制代码
- 重构已有代码
- 使用第三方库和框架
- 拆分大系统
- 对生产率的评估会阻碍减小代码库
- 编程语言会减小代码库体积
- 复杂系统导致了代码复制
- 平台架构无法拆分
- 拆分会带来复制
- 紧耦合无法拆分
- 让测试可重复
- 开发更有效
- 可预测
- 测试是对被测试代码的一种说明文档
- 测试促进写出更好的代码
- 我们仍需要手动测试
- 上级不允许
- 代码覆盖率低
- 不留痕迹
- 不要编写单元级别的代码坏味道
- 不要编写不好的注释
- 不要注释代码
- 不要保留废弃代码
- 不适用过长的标识名称
- 不使用魔术常量
- 不使用未正常处理的异常
- 注释就是我们的文档
- 异常处理带来额外的代码工作
- 为什么只有这些编码原则
- 将原则变成实践
- 低层级原则高于高层及原则
- 对每次交付负责