2015年/04月/10日

首页回退

软件设计杂谈

节选自陈天的公众号:程序人生

原文

设计首先得搞懂要解决的问题
寻找(多个)解决方案
构建灵活且有韧性的系统
软件设计是一个把大的问题不断分解,直至原子级的小问题,然后再不断组合的过程。
这一点可以类比生物学:原子(keyword/macro)组合成分子(function),分子组合成细胞(module/class),细胞组合成组织(micro service),组织组合成器官(service),进而组合成生物(system)。

一个如此组合而成系统,是满足关注点分离(Separation of Concerns)的。大到一个器官,小到一个细胞,都各司其职,把自己要做的事情做到极致。心脏不必关心肾脏会干什么,它只需要做好自己的事情:把新鲜血液通过动脉排出,再把各个器官用过的血液从静脉回收。

分解和组合在软件设计中的作用如此重要,以至于一个系统如果合理分解,那么日后维护的代价就要小得多。同样讲关注点分离,不同的工程师,分离的方式可能完全不同。但究其根本,还有有一些规律可循。