为什么要进行详细的系统设计?
- 系统由小慢慢迭代增加的过程中, 由于换了很多产品/开发, 每个人的想法不同, 迭代时间紧等原因, 导致系统修修补补越来越难维护, 这里的维护包括修复bug和开发新功能
- 程序是现实世界的模拟和映射, 需要和现实世界的逻辑保持一直, 包括组织架构, 层次结构 (真实世界是什么样子,那么软件世界就怎么设计)
- 遵循开闭原则(对扩展开放对修改封闭), 在保证满足可预见的扩展需求的前提下, 尽量简化设计和代码 (避免为不大可能发生的扩展白白增加系统复杂度)
- 单一职责, 将相关性较强的事物内聚, 相关性不强的事物解耦, 分层级的内聚和解耦(系统级, 领域级, 服务级, 类级, 方法级), 达到变和不变分离
- 最小化未来增加新功能时的成本