Replace Magic Number with Symbolic Constant


Summary:你有一个字面数值,带有特别含义。 创造一个常量,根据其意义为它命名,并将上述的字面数值替换为这个常量。数组

动机:性能

  在计算科学中,魔法数(magic number)是历史最悠久的不良现象之一。所谓魔法数是指拥有特殊意义,却又不能明确表现出这种意义的数字。若是你须要在不一样的地点引用同一个逻辑数,魔法数会让你烦恼不已,由于一旦这些数发生改变,你就必须在程序中找到全部魔法数,并将它们所有修改一遍,这简直就是一场噩梦。就算你不须要修改,要准确指出每一个魔法数的用途,也会让你破费脑筋。测试

许多语言都容许你声明常量。常量不会形成任何性能开销,却能够大大提升代码的可读性。进行本项重构以前,你应该先寻找其余替换方案。你应该观察魔法数如何被使用,然后你每每会发现一种更好的使用方式。若是这个魔法数是个类型码,请考虑使用Replace Type Code with Class;若是这个魔法数表明一个数组的长度,请在便利该数组的时候,改用Array.lenght()spa

作法:it

1.声明一个常量,令其为本来的魔法数值。编译

2.找出这个魔法数的全部引用点。重构

3.检查是否可使用这个新声明的常量来替换该魔法数。若是能够,便以此常量替换之引用

4.编译程序

5.全部魔法数都被替换完毕后,编译并测试。此时整个程序应该运转如常,就像没有作任何修改同样。im

à有个不错的测试办法:检查如今的程序是否能够被你轻松地修改常量值(这可能意味着某些预期结果将有所改变,以配合这一新值。实际工做中并不是老是能够进行这样的测试)。若是可行,这就是一个不错的手法。

相关文章
相关标签/搜索