张生栋,吴海涛,高建华
(上海师范大学 计算机科学与技术系,上海 200234)
软件开发过程中,软件维护的工作量和成本比起其它过程要大得多,而代码异味的存在使得软件的可维护性大大降低.代码异味又称代码的坏味道,是开发人员在设计代码时的不良选择,开发人员的编程习惯、经验不足或者是迫于在规定日期内完成项目的交付等原因都会引入代码异味.Martin Fowler[1]定义了22种代码异味,并详细介绍了每一种代码异味的重构步骤.近年来,代码异味的研究受到重视,检测代码异味的方法层次不穷[2-5],并且异味的关联从不同角度被广泛研究.
Palomba[6,7]等人研究发现社区异味和代码异味之间存在着相关性,他们从社会和技术债务中使用混合方法经验收敛性评估提供两者之间存在关系的证据,并且设计了一个预测模型,使用社区异味和几个来自最新技术的已知社区相关因素来预测代码异味强度.Tufano[8]等人对测试异味和代码异味的共现进行了实证分析,实验结果表明,部分测试异味与代码异味之间存在着相关性,比如Assertion Roulette(断言轮盘赌)和Spaghetti Code(意大利面代码).Cardoso[9]和Sousa[10]都探讨了设计模式和代码异味之间的关系,并且都发现设计模式的使用不能避免代码异味的存在.
Walter和Pietrzak[11]两人使用了多标准的方法检测代码异味,其中有一条检测的标准是:是否有其他代码异味的存在.他们认为,一种代码异味的存在可能意味着相关代码异味的存在,这是由于某些代码……