功能实现了软件就做好了吗?
常常在问自己这样一个问题,也听到很多人都说“先实现功能”,也许在某种意义上不得不如此,但我认为这不是真正意义上的软件开发,实现功能重要,软件的维护更重要,如果以后要实现一个新的功能我们是重新写一遍快还是在原来的基础上扩展快?如果有人要用这个软件是看源码快还是看设计书快?
大家或许要说了:别人写的代码要我来修改还不如我自己重新写,看哪些无用的设计书还不如直接看源码。问题的根源在哪里呢?
别人的代码(其实就是你写的代码,我来看)为什么很难修改?因为看不懂,代码不规范,没有详细的注释说明,设计不合理无法扩展... 这样的代码我也建议你不要修改了,直接重写吧。于是我们的软件开发就这样“重复又重复”的写下去,我们做软件确实很累,但回过头去看别人的那些代码,忍不住心里要骂:谁写的代码这么垃圾?!但是被骂的人(这个人可能就是你自己)却很委屈:哪有那么多时间写好代码做好设计?“功能实现第一”啊!
先不要埋怨了,一切从我们自己做起,反复重构你的代码吧,把注释写详细,把代码写规范,把设计更新一下(很多人的设计都是应付,最终的代码跟设计相差很远,所以导致设计文档没有人看)。
“四象限图”程序是我为FT深圳中行三期写的一个组件,如果按照“先实现功能”来做我只需要花一天就完成了,但是为了让它成为真正的“组件”,我需要反复优化接口,优化设计,优化算法,编写详细的注释说明,编写示例程序,编写设计文档,这些工作花了我一天半的时间,之所以这么做,是为了让同事拿到这个组件,看看说明就能够使用,看看代码自己就能够修改,而不是继续“重写”。
我想,如果我们要开发一个真正好的软件,不能够强调“功能实现第一”了,当前的“功能实现”只是暂时的,以后的“功能变化”才是永远的,我们不要天天写功能重复的代码,不要做那只玉米田里面的“猴子”, 做那种客户“只想运行一次”的软件,如果这样的话,我们做软件还有什么意义呢?