拥抱质量:代码质量 之 魔鬼数字
来源:互联网 发布:北京美工集团玉印 编辑:程序博客网 时间:2024/06/10 00:31
最近致力于改善团队质量,原来说过,真正去看代码的时候让我“惊 ”喜连连,惊的可不是一点半点。
对照重构中的很多经典“bad smell”,我截取产品中的典型代码,发在内部讨论组上,
分享在这里,看有没有人感兴趣:
魔鬼数字 , magic number 。
出现频率: 五颗星
杀伤力: 四颗星
预防难度: 两颗星
魔鬼数字的定义:
直接写死在程序代码中,且不是用来给变量赋值的数字。
例如:
int itemCount=10; // 这可以认为不是魔鬼数字 ,但应该有注释
int itemSize=5; // 这可以认为不是魔鬼数字 ,但应该有注释
// 一系列处理逻辑后
if ((storageManager.getCapacity() - itemCount*itemSize) < 1024){ //1024 是魔鬼数字
storageManager.expandCapacityBy(512); //512 是魔鬼数字
}
魔鬼数字的危害:
魔鬼数字不会带来程序逻辑的错误,它主要影响 代码可读性,读者看到的数字无法理解其含义,从而难以理解程序的意图。
当程序中出现的魔鬼数字量过多时,代码的可维护性将会急剧下降,代码变得难以修改,并容易引入错误。
解决方案:
1、 将魔鬼数字定义为常量
例如,将:
storageManager.expandCapacityBy(512);
改成:
public static final int CAPACITY_INCREASE_STEP=512;
storageManager.expandCapacityBy(CAPACITY_INCREASE_STEP);
2、 将使用魔鬼数字的逻辑封装为方法,增加注释
例如,将:
if ((storageManager.getCapacity() - itemCount*itemSize) < 1024){
改成:
if ( storageManager.needIncreaseCapacity(itemCount,itemSize)){
boolean storageManager.needIncreaseCapacity(int itemCount,int itemSize){
return (storageManager.getCapacity() - itemCount*itemSize) < 1024;// 当剩余容量小于 1024 字节时,需要扩充空间。
}
魔鬼数字真实片段:
1 、我相信,如下代码换一个人来接手,肯定很晕
2、 下面的代码做了剪裁,但依然很有震撼力,试问,此码既出,谁敢接手?
- 拥抱质量:代码质量 之 魔鬼数字
- 拥抱质量:代码质量 之 老太太的裹脚布
- 拥抱质量:改善团队代码质量的计划草案
- 拥抱质量:改善团队代码质量的计划草案
- 学习笔记之代码质量
- 代码质量
- 代码质量
- 代码质量
- 代码质量
- 代码质量
- 代码质量与文档质量
- 提高代码质量之静态代码检查
- BadCode之魔鬼数字
- 高质量代码的演进之旅
- Java高质量代码之 — 字符串
- 团队代码质量提升之我见
- 代码质量之基本编程规范
- 编写高质量代码之读书笔记1
- Silverlight 学习札记
- Ubuntu分布实验(CVS+SSH)
- JPA 增、删、改、查入门实例
- Excel的使用:
- 命令方式启动Oracle服务和关闭Oracle服务
- 拥抱质量:代码质量 之 魔鬼数字
- 产品标志的设计技巧
- 单例模式和多例模式
- 礼品包装设计的体现
- 礼品包装设计的体现
- 数学运算行程问题
- 画册总结
- 北京特酿怀柔市场推广方案
- 为什么我们这样的人(所谓的工程师)会被看不起?