编程|做合适的系统设计

[字体 ··]

我一直觉得编程就像走迷宫,当我们把程序功能都跑起来,说明前人已经把这些路都探索走过了;当我们把一个功能开发测试完毕发布,就像从乌漆麻黑的草丛里穿过,最终看到光明;当程序出现一些问题,我们根据自己的经验排查链路、debug 代码仿佛又一头扎进伸手不见五指的迷雾。

归根到底,这些是系统设计和编码规范的问题。系统设计是难的,需要不断权衡,同时可能会让人陷入邪恶的设计循环,导致复杂的设计;编写代码的人不同,导致代码不易理解;另一个很重要的因素是时间,时间会让人遗忘,并且人对代码的认知会随着时间的推移改变。

当回顾之前的代码,我发现,即使当时颇为骄傲的设计,现在看起来也有些愚蠢,有些不合理的地方。也就是说,没有完美的设计,如果有那也是暂时的。在设计之初,我们不应该做过多假设,应该在当前拥有的资源面临问题背景下,做合适的系统设计。很多人可能跟我一样迷惑的是,什么样的程度算合适的程度,什么样的程度算够用?合适我认为应该具备扩展性,扩展性就是再出现类似的逻辑(这些可变的部分)能否以最少代码最小变动实现,够用就是应该合理解决当下的问题,如果这些都能做到,那么系统设计应该考虑结束了。

每当我写代码,我会有些思考和总结,我一直在不断纠正我之前存在的问题,下面是我的一些经验。

我所理解的业务系统设计:系统设计主要是做扩展性的设计(业务是多变的),分离变与不变,如果扩展性满足了,那么方案应该尽可能通用、简单。

系统设计实践:

  • 使用通用解决方案,尽量少特殊处理
  • 不过早优化,针对局部/性能瓶颈优化
  • 适当抽象(过多抽象加大代码理解难度)
  • 不陷入设计循环 —— 在满足功能的基础上,能够为后续扩展
  • 追求性能和成本的东西,数据规模越大,项目越小。得把大规模的东西隔离出来单独分析和设计。(via


博客没有评论系统,可以通过 邮件 评论和交流。 Top↑