关于设计的一些杂谈
前些日子,偶然在网上看到网友关于三层架构的争论,有说好也有说不好的,大家无非都是根据自身的应用来说好或者不好。看看书店、网上到处充斥的各种各样介绍设计的书籍,大师们提出了各种各样的设计方法,我们的程序员拿着这些书籍盲目的在设计,过度设计油然而生。
有感而发,我做程序已十年有余,系统设计做了很多,团队也没少带,还真没有认真分析过为什么要设计。仔细想来我做设计无非为了解决两个问题:
1、 应对可能出现的变化,在变化时让我们付出的代价最小
变化来自于客户需求的变化、系统复用时可能出现的变化等等。为了应对这些变化,让我们在变化中付出的代价最小,于是我们想出了各种各样的设计方法对于不同的可能出现的变化我们加入适当的设计来应对变化。
2、 在多人共同开发时保证协同开发,使沟通成本尽量降低
软件的规模不同,工期要求不同都对开发人员的技能要求、数量等均不同,一个人开发软件和100 个人开发软件其开发过程,协作方式截然不同。所以我们要通过设计来保证多人的协同开发。
由此可见,设计的难点就在于如何发现变化,而不是如何应对变化现在我们有很多应对变化的方法只要勤劳你就能找到足够多的方法。如果你连变化都发现不了那么你的设计绝就无法对症下药,那么过度设计就出现了。