(大庆职业学院黑龙江省大庆市163255)
摘要:代码风格是人们在编写计算机程序源代码时使用的一套规则或指导准则,汇集了业界公认的最佳实践方法。违反代码风格编写的代码不利于开发人员和维护人员对其功能的理解,导致提升错误引入的可能性,影响程序代码的可读性与可
维护性,进而降低软件产品的质量。代码风格与软件维护的关系值得深入研究,本文科学合理地探讨了Python代码风格违反与软件维护的关系以及所带来的影响。
关键词:Python代码风格,软件维护,易变性,易错性
在软件开发过程中,代码风格通常被视为提升软件内部质量的首要措施,是软件维护的重要组成部分。在编写软件代码时,遵守代码风格规范可以减少程序错误,节约开发时间。G.Alkhatib的工作表明,维护阶段所需工作量占软件开发周期全部工作量的67%,充分说明风格良好的代码可以帮助减少软件维护的成本,进而缩短软件开发周期。遵循风格规范编写代码能够为开发人员和维护人员带来很多便利。譬如,为变量合理地命名,为类和函数添加适当的注释,以及适当地使用缩进和空格等均可以提升代码的可读性和可理解性,使得开发者和维护者能够更快速地理解程序代码的作用和意图,并以较低成本维护程序代码。因此,研究代码风格与软件演化、维护等问题的关系,对研究人员和开发维护人员来说都具有非常重要的意义。
随着编程语言的更新与发展,人们为许多编程语言制定了代码风格。Python语言作为一种解释型高级编程语言,具有简洁性、可移植性和可扩展性等特点,广泛应用于Web开发、机器学习、科学计算等领域。此外,Python语言拥有许多髙质量的开源项目库,便于研究者进行相关的科学研究工作。在科研界己有相关工作研究代码风格同软件质量与维护的关系,研究发现违反代码风格会增加软件维护的成本,但这些研究均是针对C、C++、JAVA等编程语言的代码风格,还未有相关工作针对Python代码风格与软件维护之间关系的进行探讨。因此,本文致力于研究Python代码风格与软件维护的关系,希望获取一些有价值的结论供业界参考,并对代码风格与软件维护的关系在Python语言方面进行补充。
本文重点研究了Python代码风格对软件维护的影响,并基于实验结果证实了Python代码风格会对软件模块的易变性和模块的易错性产生影响。一直以来,有关是否要遵循代码风格进行软件开发的问题备受争议,有些人认为遵循代码风格编写的代码具有更好的可读性,使得其他开发者和维护者可以快速地读懂源代码的含义,这十分有利于项目团队之间的协作以及软件产品的后期维护;也有人认为代码风格会迫使他们改变己有的编程习惯,增加了许多不必要的开发步骤,并声称代码风格问题并不会导致程序出错。据我们所知,至今还未有研究工作致力于探究Python代码风格对软件维护的影响。
为了科学合理地探讨Python代码风格违反与软件维护的关系,本文采用实证研究的方法,在开源网站中挑选7个流行的且具有4-8年以上维护时间的Python项目,在共计57个项目版本中详细分析代码风格与模块易变性、模块易错性的关系。在问题分析过程中,本文采用Fisher精确检验,Wilcoxon秩和检验以及Logistic回归模型分别探究:对14条Python代码风格与模块易变性、模块易错性的关系上分别进行了探究。实验结果用于回答以下六个研究问题:
(1)代码风格的违反与模块易变性是否相关?
(2)模块违反代码风格密度的大小与模块易变性是否相关?
(3)违反代码风格的类型与模块易变性是否相关?
(4)代码风格的违反与模块易错性是否相关?
(5)模块中违反代码风格密度的大小与模块易错性是否相关?
(6)违反代码风格的类型与模块的易错性是否相关?
在7个Python开源项目巧57个版本上,我们的实验结果表明:
(1)在Python软件的版本演化过程中,违反了代码风格的模块比没有违反代码风格的模块更容易发生改变。
(2)在Python软件的版本演化过程中,违反代码风格密度越大的模块越容易发生改变
(3)在本文所研究的部分项目中,违反了特定类型代码风格的模块比违反其它类型代码风格的模块更容易发生改变。
(4)在Python软件的版本演化过程中,违反了代码风格的模块比没有违反代码风格的模块更容易产生缺陷。
(5))在Python软件的版本演化过程中,违反代码风格密度越大的模块越容易产生缺陷。(6)在本文所研究的部分项目中,违反了特定类型代码风格的模块比违反其它类型代码风格的模块更容易产生缺略。
为保证实验结果的可靠性,我们对可能影响实验结果的因素进行了详细的分析。因此,这些研究结果不仅对Python代码风格的研究者具有启发意义,也能够为软件维护人员提供参考帮助。基于实验数据得出的结论,我们建议软件开发者应提髙对代码风格的关注程度,因为违反代码风格会降低代码的可读性和可理解性,进而増加软件维护的成本;建议软件质量维护者应多加关注违反代码风格的模块,从而在有限的时间和精力的情况下发现并解决更多问题。
参考文献:
【1】M.Allamanis,E,T,Barr,C.Bird,C.Sutton,“Learningnaturalcodingconventions,”inProceedingsof22thACMSIGSOFT,pp.281-293,2014.
【2】Basalaj,Wojciech,vandeBeuken,“Correlationbetweencodingstandardscomplianceandsoftwarequality,”Whitepaper,ProgrammingResearchLtd,2006.