确保简单问题有简单的解
来源:互联网 发布:真三国无双7 画面优化 编辑:程序博客网 时间:2024/04/29 19:00
作者:查德·拉·瓦因(Chad LaVigne)
软件架构师解决了很多非常困难的问题,但是也会去解决一些相对容易的问题,对于简单的问题,不要使用复杂的解决方案。这个建议听上去显而易见,但是遵循却不容易。软件设计者都是聪明人,真的很聪明,但是出于炫技心理,很容易陷入“杀鸡用牛刀”的误区(simple problem-complex solution trap)。如果发现自己正在设计一个非常聪明的解决方案,也许应该对此保持警醒自觉(self-aware),停下来想想:解决方案是否对症?如果答案是否定的,则需要重新设计中的各个选项。对简单问题要保持简单的解(keep the simple stuff simple)。架构师展示才华的机会多的是,只要真正的难题出现,总有这样的机会。
但这并不是说不要追求漂亮的解决方案,而是指,如果我们的任务是设计这样的系统;它只需要支持销售单一种类的基于SKU(Stock Keeping Unit,最小存货单位)的商品,那么,设计成支持可动态配置产品层次结构的系统可能就是糟糕的主意。
为复杂解决方案付出的真接成本可能看上去很小,但是其潜在成本要大得多。和开发层面的过度工程一样,架构上的过度工程(over-engineering),会导致许多问题,但其带来的负面影响则往往会成倍增加。错误的架构设计决策会使系统实现困难且不易维护,最糟糕的是,实现是无法逆转(reverse)的。在往前做出超越系统实际需求的架构决策时,不妨自问:照此实现之后,如果要再退回去会多么困难?
为有问题的解决方案付出的代价,不仅仅只是在实现和维护上。在简单问题上耗费了过多时间,则留给解决复杂问题的时间相对就少了。不当的架构决策陡然间导致了范围的蔓延,往项目中增加了不必要的风险。如果你能保证其他人也不会这么做,你的时间利用率就会大大提升。
架构师会从主观的判断或潜在不确定需求出发,产生调整解决方案的强烈冲动。请记住一点。试图猜测未来的需求时,错的概率是50%,错的很离谱的概率是49%。今天只需要解决今天的问题就好。把应用发布出去,从反馈中生成真实的需求。由于己经创建了简单的设计,当真实需求到来时,要将之整合进来就会更加容易。如果刚好运气不错,先前猜测的需求在下一个发布版本中变成了真实的需求,那现在更是成竹在胸了,与之前不同的是,现在可以估算出更合适的时间分配了,因为这次它己经变成真实的需求。不知不觉间,团队就会获得“能做出精准的预估,按时完工”的好名声了。
- 确保简单问题有简单的解
- 61 确保简单问题有简单的解
- 就面试官的简单问题我们有招!!
- C实现简单的资源池,确保所得资源空闲时间最长
- 简单的网络心跳包实现(如何确保client在线)
- 简单的问题
- 一个简单的问题
- 简单的通信问题
- 一个简单的问题
- 简单的问题
- 简单的约瑟夫问题
- 简单的排列问题
- 简单的汉诺塔问题
- 一个简单的问题
- 简单的问题
- 简单的输入输出问题
- 简单的背包问题
- 简单的背包问题
- 华硕FX50J装Ubuntu14.04失败
- Wireshark过滤规则
- 笔试的一些题目
- 【Android】Fragment真正意义上的onResume和onPause
- NodeJS 读取XML文件
- 确保简单问题有简单的解
- HDU 1085 Holding Bin-Laden Captive!(数论)
- LoadRunner如何建立关联
- java递归解释
- 人的心理特点
- 黑马程序员 --- NSString和NSMutableString的用法
- 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例
- java并发 lock锁
- 黑马程序员 File&Properties&URL