今天老大找我聊天,然后问我有没有设计的想法,我给他看了一下我的想法,也就是前几天发表的设计图。我的表述不清楚,还有我的类名称没有起好,没能让老大很清晰的知道我这些是干嘛的。
“这个给学校可以,老师喜欢看到这个,但是在我们现实的开发中是没必要这样的设计的。你弄这么复杂的图给别人看,人都看得云里雾里的。我们用不到多少类,几个流程,几个函数就能搞定,干吗要搞这么复杂呢?当然,你可以这么做,作为练手可以,但真正到工作项目中却是不必要的。”
对我的这个设计,我猜到会有两种态度,一种是觉得没必要,一种是觉得还行,有些地方有些冗余。两种态度的存在都有其合理性,主要取决于简单和适应变化之间的权衡。
敏捷开发有这样一个原则——“简单——使未完成的工作最大化的艺术——是根本的”。我承认我的设计违法了这一原则。但软件开发的另一个问题就是适应变化。
当需求容易发生变更时,更多的是去使用最少改变的设计去进行开发,而最少改变的设计往往会产生许多松耦合的模块。而对于我这个模拟的项目来说,变化多还是少我真的很难去权衡。而且我的处事方式更多的把问题分解开来逐个突破,进而影响了我的设计。
必须要调整这样一个思想——“我将不会需要它”!