What?

  如何给变量命名

Why?

  1. 易读(你三个月前的代码=别人的代码),易记,恰如其分
  2. 整齐的命名具有美感,强迫症患者居家旅行杀人放火之必备

How?

以问题为导向

  好名字反映的是问题(what),并非解决方案(how)。名字不应体现计算细节

  • // good
    Object studentData;
    int sum;
    // bad
    Object inputData;
    int calcValue;

控制变量名长度

  • 合适的变量名长度为10~16个字符
  • 较长的名字适用于少用到的全局变量,较短的名字适用于局部变量、循环变量
  • 计算限定词total, sum, average, max, min, count, index等需要加到变量名最后
    int revenueTotal, expenseAverage, expenseTotal;
    int studentCount, studentIndex;

合理使用对仗词

  • begin/end
  • first/last
  • locked/unlocked
  • min/max
  • next/previous
  • old/new
  • opened/closed
  • visible/invisible
  • source/target
  • source/destination
  • up/down

循环变量

  • 循环内用简单的i, j, k, l,不要在循环外使用这些作为变量名,因为它们已经太深入人心了
  • 嵌套循环,需要明确变量名
  • 循环外用到的循环变量,需要需要明确变量名

状态变量、标志位

  • 避免使用flag、status这些不具备明确意义的名字
  • 使用paid、approved这些可以直接读懂的更好

临时变量

  • 别用temp、tmp,要使用有明确意义的

布尔变量

  • good:done、found、error、success、fileAvailable
  • bad:isDone、isFound,is是多余的
  • bad:done/undone、success/fail,可以用一个变量解决的问题不必再额外增加一个(!done、!success)

枚举类型

  • 要体现出自己是一个枚举组中的一员,如Color.Black、Color.White

    public Enum Color {
    Black,
    White
    }
    Color black = Color.Black;

常量

  • 大写字母,下划线分隔。除此之外不应在变量名中出现下划线

关于缩写

  • 去掉所有的非前置元音,如computer->cmptr、screen->scrn、integer->intgr
  • 去掉虚词and、or、the
  • 使用每个单词的第一个或前几个字母
  • 统一在每个单词的第一/第二/第三个字母处截断
  • 去除无用后缀,如ed、ing
  • 反复缩减直到长度控制在20字符
  • bad:b4、hilite
  • bad:myVar
  • 缩写要一致,一次使用终身使用

Bad Manners

  • 变量名中使用数字,如file1、file2
  • 拼错单词
  • 仅仅靠大小写来区分
  • 中英混杂

《Code Complete》ch.11 变量名的力量的更多相关文章

  1. <<代码大全>>阅读笔记之二 变量名的力量

    1.变量命名的注意事项 1)可理解性 变量要望文知义,看到这个变量不用看其他的代码就知道这个变量表示什么意思 好的变量命:currentDate, heartRate 糟糕的变量名:newButton ...

  2. Programming | 变量名的力量

    命名准则 变量名要完全,准确的描述变量所代表的事物,一般而言,对变量的描述就是最佳的变量名.避免x,temp,i等泛泛而谈的变量名. 比如对于矩阵的循环,matrix[row][col]就比m[i][ ...

  3. 《Code Complete》ch.16 控制循环

    WHAT? 反复执行的代码片段(你是第一天学编程吗) WHY? 知道如何使用及何时使用每一种循环是创建高质量软件的一个决定性因素 HOW? 检测位于循环开始/循环结尾 带退出的循环 进入循环 只从一个 ...

  4. 使用VS Code开发TypeScript--定义变量推荐使用let

    使用VS Code开发TypeScript--定义变量推荐使用let 目录 作用域规则 JavaScript的严格模式 let与var的区别 作用域规则 一直以来我们都是通过var关键字定义JavaS ...

  5. VS code 中的各种变量 ${file},${fileBasename}

    VS code 中的各种变量 ${file},${fileBasename} 2017年08月24日 11:14:07 bailsong 阅读数:7108    from: https://blog. ...

  6. code complete part1

    最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多 ...

  7. 通过反射将变量值转为变量名本身ZZ

      这是.NET反射的一个有趣小例子:  通过反射将变量值转为变量名本身. 当然要先添加命名空间:using System.Reflection; 示例代码如下: class Program { st ...

  8. eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?

    对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情.如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助. eclipse代码里面的代码提示功能默认是关闭的,只有输入“. ...

  9. Code Complete阅读笔记(一)

    代码大全也读了好几个月了,一开始读中文版,到现在慢慢尝试着读原版,确实感受到了"每天进步一点点"的魅力.遗憾的是没有从一开始就做阅读记录,总有不能尽兴和思路不清之感.确实,就像项目 ...

随机推荐

  1. Struts2 - 传值

    Struts2传值有几种方式: 1)URL parameter 例如配置代码: <action name="login_*" class="com.my.actio ...

  2. 关于css中列表(ul ol)存在默认间距的问题

    一.总结: 有时候我们要给列表(ul ol 本身就是属于块级元素)的上表框或下边框设置颜色,如下: 但是在给内联块级元素(inline-block)的上表框或下边框设置颜色的时候,就没有这么简单: 在 ...

  3. (转)VS.NET2010水晶报表安装部署[VS2010]

    本文转载自:http://www.cnblogs.com/xiaofengfeng/p/3325793.html 欢迎C#高手加盟QQ群:9340166 水晶报表VS2010版IDE安装标准版SAP ...

  4. \r\n的坑

    \r回车符 \n换行符 由于历史原因,windows下的换行符为\r\n linux或者html等开源或公开标准的换行符是\n ---- 为什么windows下的回车换行是\r\n? 第一台打印机,每 ...

  5. 黄聪:wordpress前台自定义用户,调用wp_editor上传附件提示【抱歉,出于安全的考虑,不支持此文件类型】错误。

    1.直接禁用文件类型检测,在wp-config.php文件中,添加这样一句代码define('ALLOW_UNFILTERED_UPLOADS', true); 2.在functions.php里面, ...

  6. Android: 触屏fling/scroll/drag的区别及其详细过程

    Google了一下,终于搞清了touch screen下的几种操作模式(对应的是事件). 对于一个view, 常用的操作有点击(click)和长按(long press)二种.实际上,这些操作类型是A ...

  7. DG_Oracle DataGuard Switchover主备节点切换(案例)

    2014-06-09 Created By BaoXinjian Thanks and Regards http://wenku.baidu.com/view/dc9f00d349649b6648d7 ...

  8. set_union的几个例子

    获得两个集合的并集.两个输入序列须保证已排好序. 数组用的时候 // set_union example #include <iostream> #include <algorith ...

  9. psutil模块安装指南(win与linux)

    1.windows下psutil模块安装: https://pypi.python.org/packages/3.4/p/psutil/ 下载符合版本的软件包下载,然后安装即可. 2.ubuntu下载 ...

  10. Eclipse Tomcat配置/管理/调试指南

    从myeclipse转到Eclipse最不方便的之一莫过于Web项目部署了,老是在想怎么不能把myeclipse的那个移植过来,或者有没有高人能按照Myeclipse开发一个,非常遗憾. 原版的Ecl ...