On Simple Design III
来源:互联网 发布:adobe reader 软件下载 编辑:程序博客网 时间:2024/06/16 11:42
简单 != 可以有Bug
“这种错误情况先不用处理了吧, 简单设计嘛!”
简单不是偷懒的借口. 简单设计是一种宏观的设计策略, 并不意味着微观上的偷工减料:
- 你可以没有这个功能, 但有的话必须是不能出错的.
- 是对无法预知的需求推迟设计决定, 而不是对已知的需求视而不见
- 这种错误情况可能确实不需要现在处理, 但理由不应该是简单设计, 而是价值和优先级分析
简单 != 功能不完整
“这个功能先不用做了, 简单设计嘛!”
当听到这种说法的时候, 请确保团队的理解是一致的:
- 在产品设计上可能也会有"简单设计"之类的原则, 尽可能的简化功能, 突出主要卖点
- 但我们提到简单设计的时候, 更多的是指软件架构不要过度设计, 而不是功能.
- 最终这个功能可能确实不需要现在做, 但理由不应该是用于指导架构设计的"简单设计", 而是价值和优先级分析.
简单设计 != 不预先设计
简单设计最大的争议在于: 现在还没有这个需求, 但我很清楚这是这个domain固有的问题, 我要不要为此做设计?
其实简单设计原则有一个隐含的前提: 架构是由需求决定的. 这可以是对的. 但它忽视了另外一个事实, 就是不只有一个架构, 不只有一种设计, 才能满足需求. 另外一个更有力的事实是: 可能存在一种基本的模型, 能适应不同的需求
如果你依靠对domain的洞察力, 可以设计出一种模型, 使得即使其考虑了尚未出现的需求, 也依然比现在的模型简单, 那何乐而不为?
争议在于模型复杂了怎么办? 那就按兵不动, 静观其变吧. 争议在于按兵不动日后再动的话可能成本更高. 这是有可能的, 我也不认为有什么算法可以算出此时该如何. 推荐大家看看< < Lean Architecture > >会有帮助
See also:
- On Simple Design II: 简单 != 少
- Lightning Talk: 简单设计
- On Simple Design III
- On Simple Design II: 简单 != 少
- Design Patterns III : Strategy
- Simple Factory Design
- Design Pattern :Simple Factory
- Design Pattern: Simple Factory 模式
- Design Pattern On Road
- On NSURLConnection API Design
- Material Design on Android
- Design pattern learning III: Bridge pattern
- Two Sum III - Data structure design
- LeetCode Two Sum III - Data structure design
- LeetCode-Two Sum III - Data structure design
- Two Sum III - Data structure design
- [Leetcode] Two Sum III - Data structure design
- LeetCode - Two Sum III - Data structure design
- 170 Two Sum III - Data structure design
- Leetcode|Two Sum III - Data structure design
- 自定义抽屉 指定把手
- 视图实现圆角效果的三种方法
- lost (1)
- 【iPhone代码片段之三】获取设备支持的字体列表
- dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent消息分发知识基础(转自别人,本人适当添加或修改)
- On Simple Design III
- TC SRM551 DIV2 950 countArrangements dp
- 中科软培训总监对现代社会和IT行业看法
- 传说中的WCF(3):多个协定
- 周总结1
- UIImage图像--IOS开发
- Python模块学习 --- urllib
- Using被人忽略的用法
- 数据库细粒度访问