@IT·互联网程序员

实践Clean Code,编写可读的代码

2018-10-14  本文已影响207人  zhizhuwang

软件开发的挑战

自软件工程诞生以来,人们一直在研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,尝试建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件。
但是,软件开发在过去几十年的发展中,并没有像其它工程领域一样,在生产效率和质量上取得突破性的提升。在很大程度上,软件开发还是一个严重依赖于“人”的行业。

首先,从软件开发的成本构成上来看,花在维护上的比重远远超过用于开发的比重。据不完全统计的数据,软件项目花在维护成本上的投入占到了八成。
随着项目开发的深入进行,我们经常发现,开发速度越来越慢,代码的质量越来越差,导致后期开发的效率和质量不断下降。


其次,从软件开发人员的投入来看,花在“”代码上时间和精力要远远超过投入到“”代码。


作为一线的开发人员,我们可以尝试统计出个人在过去一个单位月、季度或年度区间内,实际产出的有效代码量。然后,从“单位时间内的代码产出”这个维度上去看看,我们在“写代码”这件事情上投入的成本占比究竟有多少。

第三,代码质量的高低对于团队协作具有十分重要的意义。在Bob大叔的经典书籍《Clean Code》中有这样一幅漫画。



这幅漫画提出了一个衡量代码质量的唯一有效标准:团队在代码走查的过程中爆出粗口的次数或者频率,即WTFs/Min。在我们的日常工作中,抱怨别人代码太烂的经历屡见不鲜。从这个角度来说,良好的代码质量对于促进软件开发团队的协作很有必要。

综合以上几个方面的因素,编写可维护、可理解、可读的代码,对于降低软件项目的成本、提升团队协作的效率,具有十分重要的意义。

Clean Code, who cares?

回首我们的软件开发生涯,有多少人遇见到下面这些情形:

半夜或者休假时被电话骚扰
来自用户的质量投诉
漫长的debugging
抱怨其他人的代码太差了,不如我重写一遍
……

在痛苦的经历之后,我们是否思考过这些问题背后的原因,思考这些问题与代码质量之间的关联。
这里总结了日常软件开发过程中存在的几种常见的偏见和认知误区。

什么是好代码?

好的代码具有以下几个特征:

其中,编写可读的代码是Clean Code的基础:

有意义的命名(变量、函数、类型)
减少大结构、大函数、大文件(职责分明)
参数不要太多
一段代码只干一件事情
减少多层嵌套
减少重复代码
有效的注释
格式友好
……

“我们是程序员,而非考古学家”。代码应该直观、准确地展现出业务领域的知识,而不是让后来者通过猜测、臆断的方式去理解和维护。
软件开发人员应该致力于让代码更容易阅读和理解,具有更好的抽象层次。并以此为基础,不断追求软件设计的“简单性”,追求个人的“软件匠艺”。

我们能做什么?

实践Clean Code,我们应该从每天的开发工作做起,从每一个小的任务做起。

参考资料

上一篇下一篇

猜你喜欢

热点阅读