什么是魔鬼数字
魔鬼数字的定义:在代码中没有具体含义的数字、字符串。
例子:
直接使用数字,谁知道这个3是什么意思?
if (user.getStatus() != 3){System.out.println(1);}
缺点
1、代码可读性差。
2、可维护性差。
3、容易出错。 例如0,1两个状态,一不小心就记错了。
解决方案
定义为常量
对于不经常改变的值,这样确实很有效。例如一年四季,星期几等。
但用来标记每个字段其实也不是很好:
1、变量名会很长,如: 表名_字段名_某个值 ,写到代码里面也不清爽。
2、每个字段可能有很多状态,光编写常量这项工作就很繁琐。 需要写很多代码。
例如: 订单支付状态-未支付
ORDER_PAYSTATUS_UNPAID = 0
直接使用数字+ 查看字段注释
弱弱的问一句,谁的项目里面完全没有使用数字状态? 至少我见过的项目里面,多多少少都有使用。
这种用法虽然比较初级,但是操作性其实还可以:
1、直接使用数字代码,虽然难懂,但是有字段注释配合,基本也能明白什么含义。
2、代码很简短。 (单数字肯定比一串常量名短多了)
所以,在没有很好的办法之前,数字状态其实还算可用。