写规范代码的意义------去除魔法数字

  毕业后,我导师跟我说,写代码不要用魔法数字,不要用魔法数字。最初只是知道,并没有深切的体验。随着写代码多了,就有体会了。

  毕业出来了,从最开始一拿到需求就忙着开发,但现在拿到需求,看看需求有什么漏洞,然后罗列出需求的业务逻辑。实现常用功能基本没有技术障碍了。也知道写个好代码是那么难,那么有意义。很经常看到这样的代码.

String name="xiaoming";
    if(name.equals("xiaoming")){
        System.out.println(name);
    }

代码业务逻辑也没有错,但是直接拿字符串来比较以前我经常做,那天需求需要把‘xiaoming‘改为其他的名字,比如‘xiaohong‘。哪怕是自己写的代码,如果多处用了这样的代码,修改起来都担心有某些地方没有修改到。

  用常量或者参数,不用魔法数字或者字符串,我知道两个好处。这两个好处,我目前深深地体会到了。

  1)代码更容易看懂,代码逻辑更清晰。看到代码就知道意义。业务逻辑中常用数字代表特定的意义。比如1:开启,0:关闭。如果直接看到数字,什么鬼?我都不知道是什么。

  2)代码维护和优化更容易。如果随便用魔法数字,那么如果要修改,我自己都怕,鬼知道,这个魔法参数,和其他代码上的联系。比如,一个地方的数字“1”和另一个地方的数字“1”,这连个“1”他们是亲戚吗?谁知道!

  我举个例子

private static final int open=1;
   private static final int close=0;

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    int status=0;
    if(status == open){
        System.out.println("状态开启。。");
    }

    }

上面写的代码,一看就知道 表示状态为open的时候,if跟着的业务逻辑。清晰可见。

时间: 2024-11-10 16:14:32

写规范代码的意义------去除魔法数字的相关文章

UI控件tag属性和魔法数字的处理

说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值 来判断执行哪个按钮的监听事件: - (IBAction)up:(UIButton *)sender // 该方法有四个btn指向,tag值是下边的,即可根据不同tag值执行相应的代码 { //upMoveTag的tag是10 //bottomMoveTag:11 //leftMoveTag:12 //rightMoveTag:13 CGRect re

写规范的javascript脚本代码 之单var

在函数顶部使用单var语句是比较有用的一种形式,其好处在于: 提供了一个单一的地方去寻找功能所需要的所有局部变量 防止变量在定义之前使用的逻辑错误 帮助你记住声明的全局变量,因此较少了全局变量//zxx:此处我自己是有点晕乎的- 少代码(类型啊传值啊单线完成) 单var形式长得就像下面这个样子: ? 1 2 3 4 5 6 var a=0,       b=3,      c=a+b,     myobject = {},        i,        j; 您可以使用一个var语句声明多个

php面试题:如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码。

如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码. $str="asdfgfdas323344##$\$fdsdfg*$**$*$**$$443563536254fas";//任意长度字符串 //解法一(最快速的解法,但是基本功要扎实) $arr=str_split($str); $arr=array_count_values($arr); arsort($arr); print_r($arr); //解法二(对逻辑能力有一定要求)

魔法数字(magic number)

什么叫魔法数字? 就是在写代码的时候,我们经常会使用到一些数字,或者是用来switch,或者是用来赋值,虽然我们自己知道这些数字代表什么,但是别人可能有所疑惑,这样造成程序的可读性变差,这就是魔法数字. 在程序开发中需要避免出现魔法数字 解决办法:使用枚举或者是宏定义,来诠释数字 1.枚举类型实质上就是一个整数,起作用就是来代替魔法数字 2.枚举类型中,指定第一个整数后,后面的数字会递增

openGL学习笔记二:看看上一篇我们写的代码

哈哈, 千呼万唤始出来, 我们第二篇笔记新鲜出炉了( 话说不是没隔多久么....) 呵呵, 闲话不多说, 我们来看看上一篇我们写的代码, 知其然也要知其所以然啊 #include <gl/glut.h> void display() { glClear( GL_COLOR_BUFFER_BIT); glRectf( -1, -1, 1, 1); glFinish(); } int main( int argc, char* argv[]) { glutInit( &argc, argv

不要相信程序员在加班时间写的代码

不要相信一个程序员在加班时间写出来的代码. (软件工程的学说表明,连正常时间好好写的代码,也不要太相信.不过这不是本文的重点,略过不提.) (不懂代码的人,看到本文中的Java代码可以略过,不影响理解.) 创造力的时限 写代码,与写文章.绘画.思考复杂问题,并没有本质上的区别,都是创造性的活动. 每个人的创造力,都会随着身体状态而波动.广为人知的是,一个人年老体衰后,相比年富力强时,创造力会急剧下降.其实,人每天的状态起伏,也同样会剧烈影响这一点. 如果是拧螺丝,那么在精疲力尽.拧不动以前,身体

公共场所英文译写规范

作者: 阮一峰 日期: 2011年1月 5日 随着国际化程度的加深,国内越来越多的公共场所开始提供英文标识. 但是,中国人的英语水平普遍不高,导致大量的翻译错误.比如,下面四个真实的例子,你能看出错在哪里吗?(答案稍后公布) * 停车场:Park * 加油站:Oil Station * 汽车租赁店:Car Rent * 请勿拍照:No Photograph 这种"中式英语"有一个专门的单词,叫做Chinglish.很多老外把它们当做笑话看. 去年,上海召开世博会,为了维护国际大都市的形

PHP团队 编码规范 &amp; 代码风格规范

一.基本约定 1.源文件 (1).纯PHP代码源文件只使用 <?php 标签,省略关闭标签 ?> : (2).源文件中PHP代码的编码格式必须是无BOM的UTF-8格式: (3).使用 Unix LF(换行符)作为行结束符: (4).一个源文件只做一种类型的声明,即,这个文件专门用来声明Class, 那个文件专门用来设置配置信息,别混在一起写: 2.缩进 使用Tab键来缩进,每个Tab键长度设置为4个空格: 3.行 一行推荐的是最多写120个字符,多于这个字符就应该换行了,一般的编辑器是可以设

jQuery之父:每天都写点代码

去年秋天,我的"兼职编程项目"遇到了一些问题:要不是从 Khan Academy 的项目里挪出时间来的话,我根本没办法将不理想的进度弥补上. 这些项目遇到了一些严重的问题.之前的工作我主要是在周末,有时是工作日的晚上做.但最终证明,这样的工作安排并不适合我.为了在周末尽可能地尝试完成高质量的工作,我压力巨大(如果我做不到的话,会有很深的挫败感).这样安排的问题在于周末并不一定都有空–而我也不想周末两天都在写代码(要牺牲掉所有的休闲和乐趣). 另外一个问题就是隔了一周这么长的时间之后,很