魔鬼数字


今天优化代码的时候,切实感受到魔鬼数字使代码的可读性变得极差。

开发的过程中,通常会使用数字来表示某种跟业务逻辑有关的状态,不同的状态通常对应着不同的处理逻辑。在代码里,就容易出现魔鬼数字的问题。尤其当遇到缺少注释的代码时,代码的可读性就变得很糟,很理解那段代码究竟是要干什么。

在代码中使用魔鬼数字(没有具体含义的数字、字符串等)将会导致代码难以理解,应该将数字定义为名称有意义的常量。

将数字定义为常量的最终目的是为了使代码更容易理解,所以并不是只要将数字定义为常量就不是魔鬼数字了。如果常量的名称没有意义,无法帮助理解代码,同样是一种魔鬼数字。

案例

// 魔鬼数字,无法理解3具体代表产品的什么状态

if (product.getProduct().getProductStatus() != 3)

{

    throw new PMSException(PMSErrorCode.Product.ADD_ERROR);

}

// 仍然是魔鬼数字,无法理解NUM_THREE具体代表产品的什么状态

if (product.getProduct().getProductStatus() != NUM_THREE)

{

    throw new PMSException(PMSErrorCode.Product.ADD_ERROR);

}