如何提升软件代码质量?
时至今日,IT行业中的各类新技术层出不穷,云计算、移动开发、大数据、人工智能、云原生、小程序等概念让身在行业中的人应接不暇。对于广大的开发者来说,追逐新技术固然重要,但练好内功则更为重要。我们能否写好那一行行的代码?能否提升软件代码的质量?这是每一位软件开发人员都必须要面对的问题。
参加工作以来,我写了多年的代码,也阅读、评审了很多人的代码,见识了一些美观、规范、逻辑清晰的高质量代码,但看到的更多的代码则是规范性差、逻辑混乱、难以阅读。在这篇文章中,我基于自己的经验提出一些提升软件代码质量的方法,希望能够和大家一起探讨。
差代码都长什么样
在我看来,不管做什么产品、使用什么新技术,好的代码各有各的好,不好的代码基本都有同样的问题。
那么,差的代码一般都有哪些问题呢?我总结了一下,主要的问题有以下几个:
第一,代码注释量过少,尤其是缺少对重要函数和代码语句的注释。这几乎是大部分软件代码的通病,很多开发人员认为只要代码写好了,有不有注释都无所谓,反正通过阅读代码也能够将程序功能看懂。但是,大家忽略了阅读代码的效率的问题。举个例子,让其他开发人员接手你写的代码,如果代码注释很完善,那么一周就可以完成代码的交接;如果注释偏少,对方在阅读的过程中会产生各种疑问,也会随时和你沟通,算上这些沟通交流的时间,那么可能最后要两周才能完成代码的交接。因此,代码的注释并非可有可无,而是必须的。我认为,好的软件代码的注释量要达到代码总量的30%以上。
第二,函数和变量的命名不规范,各类命名风格混用。对于我从事的嵌入式软件开发来说,常用的命名风格有两大类:unix风格和驼峰风格。unix风格的命名形如file_num、get_msg_len,驼峰风格的命令形如fileNum、getMsgLen。通过阅读大量的代码,我看到保持统一命名风格的代码很少,大部分的代码都会出现命名风格混用的情况,也就是unix风格和驼峰风格混用,形如get_fileNum_fromLocalFile、dealWith_myMsg。可能很多开发人员要说,不管怎么命名,并不会影响程序的功能,因此命名风格不重要。从命令风格上,我们实际上也可以看出一个开发人员本身的专业素养,对自身有高要求的开发人员自然会注重代码风格的统一,呈现给别人的是一套整齐划一、工整美观的软件程序。
第三,函数逻辑处理不合理,存在很多冗余的逻辑或代码。在编写函数的时候,很多的开发人员只是实现了程序的功能,但并未从最优的角度来考虑如何实现函数的逻辑,这也导致很多函数出现逻辑混乱、一行代码做了好几件事情、缺乏宏定义而出现魔术字等问题。另外,对于函数有无返回值及如何定义返回值,很多开发人员也并未进行仔细考虑,这导致函数中不同的处理流程的返回值都相同或不合理,影响了函数调用者的后续处理。对于一些冗余的代码,如果确认不会用到,或者只是为了调试所用,在正式版本中要注释掉或(最好)删除掉,这样才不会对代码的阅读者产生干扰。
以上就是差代码的主要问题。从根本上来说,这些问题都与开发人员对自身的要求有关,如果大家对自己有高要求,会使用各种方法来提升自己的工作质量,进而提升软件代码的质量。
如何提升软件代码质量
由于软件开发本身的复杂性,要想提升软件代码质量,需要从不同的环节入手,并且这也是一个长期的过程。我认为,可用于提升软件代码质量的方法主要有如下几个:
第一,在启动开发之前,要制定代码编写规范,并在团队内部进行宣贯。正所谓“没有规矩,不成方圆”,很多代码之所以写得不好,就是因为在前期没有制定一个统一的代码编写规范,在代码开发过程中大家就使用各自惯用的风格,最后的结果就是一套代码有不同的风格,呈现出来的完全是一个“杂牌军”的形象。代码编写规范要从注释、函数/变量/结构体/枚举/文件命名、宏定义、if/for/while/switch等关键语句使用说明等方面对开发人员的代码编写行为做出要求,确保大家在思想上和行为上保持一致性。
第二,在开发的过程中,要严格执行代码评审流程,确保代码编写规范执行到位。对于软件开发工作来说,代码评审是不可缺少的一个环节,也是提高代码质量的一种有效的手段。一些大的IT公司,像谷歌、微软等,尤其注重代码评审。代码评审的流程是开发人员对自己写的代码进行讲解,然后由评委提出并汇总相关改进意见,最后由该开发人员对照评审意见修改软件代码,经再次审核无误之后再上库。要做好代码评审,需要做到这几点:1)开发人员本人要持有开放心态,愿意分享自己的工作成果,并勇于承认自身的不足而加以改进;2)评审人员要对事不对人,要懂得代码评审是为了发现程序代码的缺陷,而非人自身的问题;3)团队或小组要对代码评审的结果进行总结,并以文档的形式保存起来,方便后期查阅。
第三,最为重要的是,开发人员本人要有规范化的意识和不断提升自身能力的决心,公司或团队也要配套相应的政策或流程。我们上面说的代码编写规范和代码评审,归根结底必须要有开发人员的配合,是要靠人来执行的。如果一个开发人员的规范意识不强,也不愿意随时接收和学习新的知识,那么我们制定再多的规范都无济于事。因此,提升软件代码质量的出发点和落脚点都在开发人员身上。对于一家公司来说,招到有自驱力和学习意愿的员工固然重要,但有相关的政策或流程能够确保开发人员写出高质量的代码则更为重要。具体而言,公司或团队要定期宣贯提升代码质量的重要性、出台政策确保代码评审严格执行、奖励代码编写质量高的员工等等。只有通过开发人员本人的努力,并且有相关的流程或政策作为保障,才有可能不断地提升软件代码的质量,进而做出用户满意的、高质量的产品。
结束语
如何提升软件代码质量是IT行业的一个永恒的话题,不同的人、不同的团队、不同的公司有不同的做法。对于我们每一个开发人员来说,只有不断地提升自己的技能、不断地提升自己编写的软件代码的质量,才能够获得同事、团队及公司的认可,进而实现自身的价值。对于一个公司来说,不断提升产品的软件代码质量也非常的重要,这关系到公司的声誉及在客户心中的形象。
在2022年8月,我国已经迈入了创新型国家的行列,这就要求我们做出的每一样软件产品都必须要具备很高的质量。因此,具体到我们每一位软件开发人员,写好每一行代码、不断提升软件代码质量也算是为国家的发展做出了自己的贡献。