今天给大家推荐的是来自ICSE 2021的一篇调查软件开发中方法命名情况的文章——"On the Naming of Methods: A Survey of Professional Developers"。我们都知道一个好的方法命名可以降低软件维护成本,提高软件的可读性与可理解性。尽管目前已经有很多关于软件方法命名已经有很多规范和标准,但对于开发人员如何使用或是否同意这些标准还没有一个系统性的研究。因此,本文作者针对软件开发方法命名进行了深入调查,调查的结果不仅能够加深对于方法命名标准的理解,还为自动化方法名称评估提供了理论基础。
本文主要针对以下两个问题来展开调查和分析:
(1)对于好的方法名称的普遍共识;
(2)不同工作年限和编程语言的开发人员对于方法命名标准的态度
参加测试的开发人员大多拥有超过10年的编程经验,并且他们的编程语言背景十分的多样化,如表3和图3所示。
具体的调查结果如图4所示,从中我们可以得到以下结论:
-
Naming Style:99%的参与者非常同意使用标准的命名方式(例如驼峰命名法和下划线命名法),统一的命名风格能够提高可读性,且提高团队合作的效率。
-
Grammatical Structure:73%的参与者认为如果一个方法名中包含多个单词,应该使用正确的语法结果来命名;而部分参与者认为某些情况按特征或实体进行组合会更好,并且认为并非每个人都熟悉英语,命名标准需要灵活性。
-
Verb Phrase:85%的参与者认为应该在方法名称中使用动词或动词短语,以提高方法名称的可理解性,例如使用getLength()而不是length();而部分参与者认为方法命名有时以返回的内容命名更方便,不一定需要包含动词。
-
Dictionary Terms:97%的参与者同意应该在方法命名中使用有意义的自然语言术语而不是其他非标准的字符,例如使用to而不是2,使用FindLength()而不是aaaa()。
-
Full Words:97%的参与者同意方法命名中应该包含完整的单词而不是单个的字母,例如使用connection()而不是c(),单个字母会严重影响代码的可读性。
-
Abbreviations & Acronyms:89%的开发人员认为不应该在方法命名中包含与个人偏好相关的词或者成语和俚语,例如zhangxuan()、cutting_corners()等,成语和俚语会影响代码的可理解性。
-
Idioms and Slang:94%的开发者认为方法中不应当包含非标准或非普遍熟悉的缩写词,例如可以使用get_URL(),但不应当使用类似getProtoName(),因为Proto会造成是Protocol还是Prototype的误解。
-
Prefix/Suffix:89%的参与者认为方法名称中不应包含来有关系统的前缀或后缀。
-
Length:81%的开发者偏好方法命名的长度在5± 2个词,结果如图5所示,过长方法名在某种程度上可以视为一种code smell。
总的来说,本文主要是对软件开发中的方法命名进行了一个系统性的调查,总结了一些软件开发人员普遍同意的命名规范。尽管这篇论文跟安全分析没有直接关系,但他的一些实验结果可能可以应用到例如通过函数名称来对函数进行匹配、函数功能分析以及代码规范性评估等工作上,同时也对一些程序编写工作具有参考和借鉴意义。
原文链接:
https://ieeexplore.ieee.org/document/9401967
数据集链接:
https://github.com/KSU-SDML/Method-Naming-Standards-Artifact
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 学术论文推荐 2021-07-20
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论