magic number 魔数的定义
参考网站:
magic number 魔数的定义
定义一:编程中的常数变量名
譬如一个很简单的根据职位计算薪水的方法
public int getSalary(String title, int grade) {
if ("Programmer".equals(title))
else if ("Tester".equals(title))
else if ("Analyst".equals(title))
如果我们拥有一个常量定义的interface,代码就会变漂亮起来了:
public int getSalary(String title, int grade) {
if (Constants.TITLE_PROGRAMMER.equals(title))
return grade * Constants.BASE_SALARY_LOW + Constants.ALLOWANCE_LOW;
else if (Constants.TITLE_TESTER.equals(title))
return grade * Constants.BASE_SALARY_LOW + Constants.ALLOWANCE_MEDIUM;
else if (Constants.TITLE_ANALYST.equals(title))
return grade * Constants.BASE_SALARY_HIGH + Constants.ALLOWANCE_HIGH;
从以上的分析,在一个Project里面,避免使用魔数(Magic Number)和魔字符串(Magic String)是相当必要的。通过定义的常量去access特定的字符串和数字也已经是软件开发的standard。那么是不是所有的数字和字符串都应该定义成常量呢?或许有朋友会认为所有的数字和字符串都应该定义成常量,但是我觉得,每个字符串确实是应该定义成常量的,但是对于数字而言,如果数字本身的语义没有得到延伸,那么就不应该定义成常量。譬如数组的index就不应该定义成变量。
定义二
很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。因此这几个字节的内容也被称为魔数 (magic number),因为根据这几个字节的内容就可以确定文件类型
比如mnist前几个字节