对于一个程序员来说,代码就是他的另一半生命,如何写出高质量的代码是每一个程序员应该经常思考的问题。因为他关系到程序员个人价值的体现,工作绩效,个人升迁乃至职业生涯发展;可能有人要反驳我说,我以后会走管理路线,写不好代码关系不大;我只能抱歉的说一句,你太天真了,你可以去看一下当下中国的软件开发行业的项目经理有多少是从优秀的程序员升级来的,更有甚者,Manager本身就是架构师加首席程序员。如果你连你负责的代码的质量都不能保证,老板如何放心的把项目交给你来管理。当然,我并不是说,做程序员就只要闷头Coding就行了;而只是强调一点,做好本职工作,努力提高代码质量,以此来提高个人工作绩效,在同事和上司面前树立你的个人品牌,才是一个程序员发展的正确道路。既然如此,那如何才能产出高质量的代码呢?这里我仅仅发表一下个人的一些想法和感悟,供大家交流和参考:
1.充分正确的理解需求
对于Manager或Leader交给你的任务,你一定要知道需要实现什么功能,它的应用场景是什么样的,最好用UML做出用例帮助你来加深对需求的理解。最重要的一点是,如果有不清楚的,一定要及时反馈,这个工作一定要做好,否则你的代码质量再高,也是白搭。另外,如果你觉得可能有一些需求以后可能会有变化或提高,要做重点关注。
2.良好的可扩展的设计
需求弄清楚以后,别立即就开始写代码,至少你要有一个设计产出吧。用什么工具来表示你的设计不是一个大问题,除非项目有要求;UML图可以,思维导图似乎也行,最差可以在纸上画出来吧,只要能表示你的设计思路,怎么做随便你。在这里,我有三点经验;第一,在需求可能发生变化的地方,一定要留出抽象的接口,如果你是Java程序员,那么就是指接口和抽象类;要是你是C++程序员,那么就是指虚拟基类;第二,不要指望一次可以做到尽善尽美,100%的把需求转化为了设计。只要能做到80%,就可以开始写代码了。可能你会问,我怎么知道我的设计清楚的表达了多少需求,很遗憾,我也回答不上来,一切在你个人对需求的理解上;理解的越好,你就越能清晰的认识到你的设计究竟多大程度上契合了需求。第三,设计模式绝对是一个有力的武器,每个程序员斗应该去不断的学习它;但是要用的好没有别的办法,只有在平常工作中有意识的去实践,不断总结积累,才能最大限度发挥它的威力。
3.迭代式的代码编写
有了设计,下面我们就要开始写代码了,这个过程是一个迭代的过程。首先,按照原始设计写出代码,在写的过程中,你就会发现有好多问题在等着你,没有关系,这些就是你最重要的东西,把他们一一解决并记录下来。完成你的代码后,自己做Review,对刚才记录的问题做分析,你就会发现有的问题来自于需求理解不够,有的则来源员设计的不合理,还有就是技术本身的限制。修改设计,重构原来的代码,然后再发现问题,再分析,修改设计,再重构,直到你自己没有发现什么问题,认为自己的代码已经100%反应了设计,而设计也100%反应了需求。下来,你还要为你的代码编写单元测试代码,保证代码逻辑按照你的设计来进行;这一步后,还没有完,接下来,你应该邀请同事和Manager,Leader一起来做Peer Review,让他们对你的代码的结构,可读性,可扩展性,是否准确全面的反应了需求提出意见。对这些问题,大家进行讨论,确定解决的办法,然后你再去执行。一般,我在写代码时最少要进行两次代码重构才能结束这一过程。
写代码是一个艰苦卓绝的过程,只有通过不断的努力,才能写出结构清晰,可读性强的优美代码。在结束之前,我发表自己对于好代码的外在表现的一些看法:
1.一个类只定义它该做的,方法不能太多,对外的方法不超过5个。
2.方法尽量简短,要是超过了10行,你就可以考虑重构了。
3.要有相当数量的接口保证可扩展性。
4.类名,方法名,变量名要有意义。
5.详细清晰的注释。