- 满足业务要求
- 尽量避免缺陷
- 易于理解
- 易于演进
- 易于复用
满足业务要求
事实
- 需求的复杂性
- 沟通的模糊性
应对
- 加快认知:结构化的需求探索方法
- 提升沟通质量:高质量的沟通并强调设计契约
- 可以灵活应对变化:提升设计演进能力(所谓中台,实际上就是聚合变化和不变化的内容放在一起)
尽量避免缺陷
缺陷无法避免!只能尽量
事实
- 缺陷无法完全避免
- 没有及时发现缺陷和处理缺陷才是真正影响成本的因素
应对
- 缩短缺陷发现周期
- 降低缺陷的发现和修复成本呢
- 缩小缺陷的影响范围
易于理解
事实
- 代码阅读的次数和时间远远高于编写次数与时间
- 代码中充满了细节
应对
- 编写时尊重未来读者的时间
- 建立一致的风格和范式
- 通过封装、层次化、抽象等降低认知负担
- 避免意外,尽可能达到望文生义
- 避免其他不必要内容的深入
易于演进
事实
- 软件在生命周期中一定会修改
应对
- 做到正交设计
- 使用自动化测试保证质量
- 少就是多:避免大规模预先设计,增强弹性设计
易于复用
事实
- 作为信息制品,软件的复用成本极低
- 设计不良导致了复用困难
应对
- 在业务级别复用
- 定义清晰的职责和契约
- 高质量的管理依赖