程序中的魔鬼数字

在代码中使用魔鬼数字(没有详细含义的数字、字符串等)将会导致代码难以理解,应该将数字定义为名称有意义的常量。

将数字定义为常量的终于目的是为了使代码更easy理解,所以并非仅仅要将数字定义为常量就不是魔鬼数字了。假设常量的名称没有意义,无法帮助理解代码,相同是一种魔鬼数字。

在个别情况下,将数字定义为常量反而会导致代码更难以理解,此时就不应该强求将数字定义为常量。

案例

// 魔鬼数字,无法理解3详细代表产品的什么状态

if (product.getProduct().getProductStatus() != 3)

{

throw new PMSException(PMSErrorCode.Product.ADD_ERROR);

}

// 仍然是魔鬼数字,无法理解NUM_THREE详细代表产品的什么状态

if (product.getProduct().getProductStatus() != NUM_THREE)

{

throw new PMSException(PMSErrorCode.Product.ADD_ERROR);

}

//样例中尽管将数字定义为了常量,但代码却并不easy理解

Point drawCenter = new Point();

drawCenter.x = parentWindow.x + (parentWindow.width - clientWindow.width) / HALF_SIZE_DIV;

drawCenter.y = parentWindow.y + (parentWindow.height - clientWindow.height) / HALF_SIZE_DIV;

return drawCenter;

//直接使用数字,代码反而更easy理解

Point drawCenter = new Point();

drawCenter.x = parentWindow.x + (parentWindow.width - clientWindow.width) / 2;

drawCenter.y = parentWindow.y + (parentWindow.height - clientWindow.height) / 2;

return drawCenter;

程序中的魔鬼数字,布布扣,bubuko.com

时间: 2024-10-24 16:36:50

程序中的魔鬼数字的相关文章

代码中的魔鬼细节

软件开发最关心的三个指标:性能.内存.程序稳定性三方面.本文总结一下最近项目扫尾工作中的一些遭遇: 使用正确的哈希函数 道路的路况绘制,道路的颜色由三个ID唯一确定,他们存储在一个哈希表中. 上图是两种哈希函数的性能对比.badHashFunction的结果为蓝色,goodHashFunction的结果为红色曲线. 使用坏的哈希函数,执行DJB_hash的结果冲突可能性十分大,因此哈希的平均查找次数非常大,在性能很好的机器上拖动时也有明显的卡顿现象. 优化哈希函数,将三个ID的所有位数拼接成一个

[转]MSI安装程序中的文件替换

原文链接:http://teach.hanzify.org/article/652-1233562028.html 前言 最近有汉化朋友问起如何不重新制作MSI文件,而直接用汉化好的文件替换MSI安装程序中的文件.为此,将本人的实践经验作个总结,供各位汉化人参考.有错误的地方烦请指正.※说明:目前可以用于MSI编辑的软件很多,但是有些软件在保存时会在MSI文件中写入一些自己的表或内容,有些会另外嵌入一个CAB文件,使得MSI文件增大.而这里提供的方法保证不会写入任何不必要的内容和文件.※关键点:

【翻译】在Ext JS 5应用程序中如何使用路由

原文:How to Use Routing in Your Ext JS 5 Apps 简介 Ext JS 5是一个重要的发布版本,它提供了许多新特性来创建丰富的.企业级的Web应用程序.MVVM和双向数据绑定为开发人员承担了大量的繁重工作.在Ext JS 5种,另一个新特性就是路由,它可以在控制器内轻松的管理历史记录.前进和后退按钮是每个浏览器都会拥有的公共用户接口,现在,使用Ext JS 5在单页面应用程序中处理导航变得相当简单了. Ext JS 5路由 在Ext JS,已经可以使用Ext.

MEX程序中的mexFunction函数【转】

与C中的main函数一样,MEX程序中的开始函数为mexFunction.默认变量参数是: void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 其中 nlhs输出参数数目 plhs[]指向输出参数的指针 nrhs输入参数的数目 prhs[]指向输入参数的指针 例如:使用[a,b]=test(c,d,e) 调用mex函数test时,传给test的这三个参数分别是prhs[0]=c ,prhs[1]

内置CRC于hex程序中的方法

[摘要] 为了让MCU程序显示自身的CRC值,需要将其内置到程序中.但是,通常情况下,用计算好的CRC值,代替程序中原有的默认值之后,会导致程序发生变动,进而引发CRC值的变动.最终,新程序显示的值,是旧程序的CRC值. 1.问题原因分析 首先要说明一下,为什么要内置CRC值到程序中. 把程序分成两个hex文件,一个是普通的程序,另一个单独使用Flash的一页,并将CRC值放置在其中,每次下载两个hex文件,不行吗?这方法本身是可行的,但是,为了显示CRC值,而使用Flash的一页,太浪费了.而

[收集]在iPhone桌面的应用程序图标右上角显示数字

能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad { [super viewDidLoad]; [UIApplication sharedApplication].applicationIconBadgeNumber = 2; } [收集]在iPhone桌面的应用程序图标右上角显示数字,布布扣,bubuko.com

了解 JavaScript 应用程序中的内存泄漏

简介 当处理 JavaScript 这样的脚本语言时,很容易忘记每个对象.类.字符串.数字和方法都需要分配和保留内存.语言和运行时的垃圾回收器隐藏了内存分配和释放的具体细节. 许多功能无需考虑内存管理即可实现,但却忽略了它可能在程序中带来重大的问题.不当清理的对象可能会存在比预期要长得多的时间.这些对象继续响应事件和消耗资源.它们可强制浏览器从一个虚拟磁盘驱动器分配内存页,这显著影响了计算机的速度(在极端的情形中,会导致浏览器崩溃). 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在.在最近几

asp优化:改进 ASP 应用程序中的字符串处理性能

摘要:大多数 Active Server Pages (ASP) 应用程序都要通过字符串连接来创建呈现给用户的 HTML 格式的数据.本文对几种创建此 HTML 数据流的方法进行了比较,在特定情况下,某些方法在性能方面要优于其他方法.本文假定您已经具备一定的 ASP 和 Visual Basic 编程方面的知识. 简介 编写 ASP 页面时,开发人员实际上是创建一个格式化的文本流,通过 ASP 提供的 Response 对象写入 Web 客户端.创建此文本流的方法有多种,而您选择的方法将对 We

Web 应用程序中的安全向量 – ASP.NET MVC 4 系列

       Web 程序运行在标准的.基于文本的协议(HTTP 和 HTML)之上,所以特别容易受到自动攻击的伤害.本章主要介绍黑客如何滥用应用程序,以及针对这些问题的应对措施.   威胁:跨站脚本攻击(XSS)        XSS 攻击在 Web安全威胁上排名第一,然而遗憾的是,导致 XSS 猖獗的主要原因是开发人员不熟悉这种攻击.可以使用 2 种方法实现 XSS: 被动注入(Passive Injection):通过用户将恶意的脚本命令输入到网站中,而这些网站又能接收"不干净"