重构数据-Replace Magic Number with Symbolic Constant常量取代魔法数八
创始人
2025-05-31 02:29:14
0

重构数据-Replace Magic Number with Symbolic Constant常量取代魔法数八

1.常量取代魔法数

1.1.使用场景

具有明确意义的数值替换为常量表达它的含义。

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

许多语言都允许你声明常量。常量不会造成任何性能开销,却可以大大提高代码的可读性。

进行本项重构之前,你应该先寻找其他替换方案。你应该观察魔法数如何被使用,而后你往往会发现一种更好的使用方式。如果这个魔法数是个类型码,请考虑使用Replace Type Code with Class (218);如果这个魔法数代表一个数组的长度,请在遍历该数组的时候,改用Array.length()。

1.2.如何做

  • 声明一个常量,令其值为原本的魔法数值。
  • 找出这个魔法数的所有引用点。
  • 检查是否可以使用这个新声明的常量来替换该魔法数。如果可以,便以此常量替换之。
  • 编译。
  • 所有魔法数都被替换完毕后,编译并测试。此时整个程序应该运转如常,就像没有做任何修改一样。
  • 有个不错的测试办法:检查现在的程序是否可以被你轻松地修改常量值(这可能意味某些预期结果将有所改变,以配合这一新值。实际工作中并非总是可以进行这样的测试)。如果可行,这就是一个不错的手法。

1.3.示例

   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;

相关内容

热门资讯

常州法院2025年前三季度调解... 调解结案16474件、调解成功率24.08%——这是2025年前三季度常州法院交出的司法成绩单。通过...
安徽省政协研究室副主任陈鑫已任... 据铜陵市政府官网消息,11月20日上午,市委举行理论学习中心组学习会议,邀请省委社会工作部副部长高维...
原创 联... 据光明网报道,11月19日,在联合国大会的讨论中,日本企图争取成为安理会常任理事国的梦想再次破灭,令...
南部关于全县规范法律咨询服务机... 一、专项行动时间 自即日起至2025年12月。 二、举报受理范围 社会各界反映强烈的某些法律咨询服务...
“男子持刀入室盗窃”视频引发关... 近日,一段疑似“小偷”入室盗窃被业主家中监控拍下的视频在网上引发关注。11月21日晚,“翠屏公安”微...
绝不允许日本军国主义幽灵复活!... 2025年11月7日,日本首相高市早苗宣称,如果中国大陆对台湾出动军舰并使用武力,可能会构成“存亡危...
【解决】AI法律助手荣获202... 2025全球数字经济大会启幕,搭建国际数字合作高端平台 经国务院批准,由北京市人民政府、国家互联网信...
嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...