具有明确意义的数值替换为常量表达它的含义。
在计算科学中,魔法数(magic number)是历史最悠久的不良现象之一。所谓魔法数是指拥有特殊意义,却又不能明确表现出这种意义的数字。如果你需要在不同的地点引用同一个逻辑数,魔法数会让你烦恼不已,因为一旦这些数发生改变,你就必须在程序中找到所有魔法数,并将它们全部修改一遍,这简直就是一场噩梦。就 算你不需要修改,要准确指出每个魔法数的用途,也会让你颇费脑筋。
许多语言都允许你声明常量。常量不会造成任何性能开销,却可以大大提高代码的可读性。
进行本项重构之前,你应该先寻找其他替换方案。你应该观察魔法数如何被使用,而后你往往会发现一种更好的使用方式。如果这个魔法数是个类型码,请考虑使用Replace Type Code with Class (218);如果这个魔法数代表一个数组的长度,请在遍历该数组的时候,改用Array.length()。
double potentialEnergy(double mass, double height) {return mass * 9.81 * height;}
将 9.81数值替换为常量
double potentialEnergy(double mass, double height) {return mass * GRAVITATIONAL_CONSTANT * height;}// 什么常量static final double GRAVITATIONAL_CONSTANT = 9.81;