本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/45131085
工作将近一年了,从事软件开发也有三年多了,也写过不少的代码,但整体上来看,代码质量很差。一方面
是缺乏编程方面的经验,写出的代码不能够考虑全面地情形;另一方面可能是需求设计的频繁性变动,导致代码的结
构的不稳定性变动。这些都直接或间接地影响代码的质量,而代码质量的好坏将会直接影响到产品的性能和用户体
验。这些都会无形中影响用户对产品的喜爱程度和关注程度。不可否认,质量较好的代码,逻辑性相对比较地清晰,
代码结构亦是比较地清晰。自然而然,代码中类和方法的长度就会相对简短。简短的代码活的更长久(没有程序员不
喜欢简短的代码)。这样,做出来的产品问题相对就会较少。
然而,大多数情况是这样的:开发人员仅仅关注功能是否得以实现,很少关注是如何实现的,往往是以“堆代
码”的形式去实现功能。可能是项目赶进度,来不及太多的考虑,也可能是开发人员能力有限。开发者自己甚至都不
明白代码的内部逻辑是什么样子的,这样代码往往由于逻辑混乱导致代码量较大。显然,可以断言,这样的代码十有
八九是存有问题的。一旦出现问题,开发人员需要花较多时间对代码逻辑进行理解,由于代码量较大,修改过程无形
又会增加额外的代码量。甚至出现一个问题的修改完成导致其它问题的出现。久而久之,类和方法就会变得臃肿不
堪。而产生这样问题归根结底的原因是开发人员不能够完全理解自己所写代码的逻辑。在《程序员修炼之道:从小工
到专家》一书中有这么一句话:不要写出自己所不能了理解的代码,那样只会加速系统的腐烂。程序员很有必要对自
己所写代码进行思考和理解。
何为质量较高的代码呢?可能较多人会想到多用一些设计模式,尽量多一些高大尚的东西。但是,在我看来,
代码未必非得使用一些设计模式才显得上是质量较高的代码。针对开发业务的程序员来说,我觉得代码逻辑的清晰性
是很重要的。其次是代码的整洁性,优先使用较短的类和方法,那样出现问题也比较容易发现问题所在。程序员能够
完全理解自己所写代码,并对其进行持续优化形成代码逻辑清晰、代码量简短的代码称得上是质量较高的代码。(纯
属个人理解,有不同意见可以讨论)
针对某一个功能,在最初开发的过程中,如果时间允许,大多数程序员都会认真对待,尽量把代码写的简短;
也有部分程序员,只是为了实现功能而写代码,没有认真思考,导致实现上逻辑混乱,明明几行代码可以实现的功
能,却用了几十行,甚至上百行。这就是所谓的“堆代码”的开发方式吧。单纯地为了实现功能而去编码,并未考虑
代码质量的好坏。如果不考虑对代码进行重构,这样的代码会对系统带来很多潜在的危险。就我个人而言,在最初完
成编码任务时,自我感觉都是良好的。但是经过一段时间后,再返回来从整体看自己写的代码,就会发现很多的问
题。两个能够合并的方法未进行合并;某些全局变量是没有必要创建;某些方法可以抽取为一个公有的方法...这些都
或多或少地导致代码不够稳定。
在对代码有了一个整体上的理解后,对代码进行了简单地重构,消除全变量和某些局部变量,抽取方法.......通
过这一系列的搬移代码,原有的代码被改的面目全非,但是逻辑却比之前更加清晰,代码量更加简短。我想经过这一
次的代码优化,功能将会变得比之前稳定一些,事实证明我的想法是对的,但是还是存有不少的问题,但是这时候,
如果出现某些问题,能够很快地进行定位,相比之前在一个上百行代码、局部变量很多的方法中寻找bug,要省不
少时间。
又经过一段时间,我再次浏览已写过的代码,又发现代码并不是很好,很多地方还需要进行调整和修改。这
次,我又按照之前的做法,减少全局变量和局部变量的数量、减少方法中代码的长度、抽取部分方法.......通过一
些列的修改和搬移,原有的代码改动很大,但不至于面目全非,逻辑比之前更加清晰了,能够基本完全理解某一部分代码是做什么的,以及为什么要这么写。我想经过再一次地代码优化,功能将会更加稳定,事实又一次地证明我的
想法是对的。
之所以举出上面的例子,是为了阐述持续性地对代码进行重构和修改是很有必要的。代码并不是在开发完成
后就像一潭死水一样,不去使之“流动”和“改变”,而是应该经常性地回过来审视已写代码,对其进行批判和思考,对其进行整理和重构。使之变得更加完美,使之质量有所提高。但是,大多数的程序员根本没有做到经常性地对代码进行审视和评判,以及整理和修改。在没有了解重构之前,我自己也经常那么做的。大体上的做法是,开发任务完成后,就可以拍屁股走人了,等后续有问题再说,没有问题就那样了。这样的做法其实是不好的,首先,体现在对自己所写代码不负责;其次,体现在没有一颗精益求精的上进心;最后,归根结底还是体现在一个“懒”字上
,认为是在为公司干活,没有必要那么卖力,自己做完就行了,再说公司也没给涨工资......这些想法在我看来都是不理智的。在公司上班干活学技术都是为自己以后的发展做铺垫的,怎么能说和自己无关呢!再说每一次对自己的代码进行修改和优化,本身就是提高逻辑思维能力的过程,怎么能偷懒到不思进取呢!
希望此文得以共勉!不断持续努力进步!同时希望本文对你有所帮助!