Code Is Crap
2 hours ago
- CRAP代表变更风险反模式,这是一个用于识别低质量代码的易记缩写。
- 该指标由Alberto Savoia和Bob Evans在2007年创建,灵感源自开发者对“糟糕”代码的主观抱怨。
- CRAP1公式:CRAP1(m) = comp(m)^2 * (1 - cov(m)/100)^3 + comp(m),其中comp是圈复杂度,cov是代码覆盖率;分数超过30表示方法“糟糕”。
- 该公式是通过对使用JUnit测试的开源和商业Java项目进行实证开发而成,经过迭代以匹配主观评价。
- 高复杂度与低测试覆盖率表明可测试性和设计不佳,因为开发者往往避免为复杂的代码编写测试。
- CRAP1有局限性:它不考虑内聚性或耦合性等更高阶的指标,而且高覆盖率仍可能伴随着较弱的测试。
- CRAP已被移植到多种语言和平台(例如.NET、PHP、Ruby),并用于Clover和Cobertura等工具中。
- 尽管最初不活跃,该指标已获得关注;用户可以通过现有工具实现CRAP,或搜索特定语言的移植版本。
- 面临的挑战包括下载链接失效和版本不兼容;存在针对Java 7兼容性的解决方法。
- 这篇文章呼吁进一步开发并欢迎贡献,尤其是针对诸如COBOL等尚未移植的语言。