入行也几年了,回首这几年的经历。发现没有一个项目能够让人满意,不是Bug满天飞就是延期。到底为什么呢?客户太刁蛮?管理问题?技术问题?还是? 抛开其他因素,聊聊我们开发人员的问题。
先从目前的项目谈起,现在我在项目是在以往代码上开发新的应用,好多代码是01年左右写的,日后不断的添加新功能,目前源代码有200M左右。看看代码,上千行的方法不计其数,也佩服印度阿三把代码写成这样还能保证业务正确,尤其还是银行相关的。虽然方法很长,不过Log 确实很详细,基本可以通过Log 定位那里有问题。而对于目前开发,难道还有继续写成千上万行的方法吗?
目前JEEWeb应用,不论是规范的EJB+JSF 还是开源的Hiberante Spring struts,都是分层的架构,应该从架构上没有问题,看了看公司另外项目的代码,虽然已经上09年了,也应用了JSF Spring hiberante 等很完善架构,为什么还是不能让客户,发人员满意呢?追根究底,软件其实就是一行一行代码实现的,所以本质还是代码出问题了!!
现在有前人总结的设计模式,OO设计思想,以及优秀的UML工具,很好的领悟这些东西,应该可以保证我们的设计没有问题,而Spring Hiberante 等优秀的工具,在软件架构上也应该没有问题。所以问题还是我们的Code。打开我们的Code,谁能拍着胸口说我们的代码没有任何没有拷贝张贴?谁能保证说我们的代码具有很好的可维护性呢?往往会有很多理由,比如工期太紧,没时间重构或者都是遗留代码没有办法重构。而最好的结局呢,代码越来越难维护,Bug多的QA都失去了信心,而我们开发人员越来越没有底气了,项目也一度延期或被取消。
设计能力解决问题能力以及职业素养是我们开发人员的核心竞争力,而这些能力就是在不断优化我们的领域模型,以及不断编写优秀的代码中慢慢提高的,不是看几本设计方面架构的方面的书就Ok的。正如Clear Code作者说比喻的,软件开发人员就是匠人,你写的每行代码就是你的产出,你的作品。
其实我们大多数人其实都知道这些道理,但其实都习惯了,不想改进而已。这就是问题所在!! 没办法,那就从流程上控制,敏捷开发想从流程上来避免这些问题,首先测试优先,使我们不得不前期设计可以测试的领域模型,结对编程让另外一个人检查你的代码,让你不能随意聊天看网页,提高效率,培养职业修养。而实际应用呢,好多公司老板感觉两个人用一个电脑不是效率很低, 一个人不是闲人吗?所以结对被取消了,工期一紧,测试取消了。所谓敏捷开发基本是挂牛头卖狗肉。
所以,还是从我们自身来解决问题,首先多看看前人的经验总结,比如OO设计思想,在设计中,通过各种方式在设计上减低代码耦合度。在编写代码上,遵循成熟的代码规范以及不断的重构代码,减少代码中臭味。
总之,既然从事了这个行业,就要热爱这个行业,牢记在心的就是:我们的每一行代码就是我们的产品!保证我们每一行代码都是高质量的,优秀的!