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
  • 拼错单词
  • 仅仅靠大小写来区分
  • 中英混杂

最新文章

  1. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)
  2. HTML常用标签
  3. Android DatePickerDialog TimepickerDialog
  4. 哈希-Gold Balanced Lineup 分类: POJ 哈希 2015-08-07 09:04 2人阅读 评论(0) 收藏
  5. ios-仿新浪微博app-第1天UI搭建
  6. java_类承继其他类的内部类例子
  7. 剪花布条 - HDU 2087(简单KMP | 暴力)
  8. location对象的属性和方法应用(解析URL)
  9. 最近快速的过了一遍php基础语法
  10. 几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi
  11. Miniconda 虚拟环境安装及应用
  12. Hive| 查询
  13. awk技巧【转】
  14. ural1855 线段树区间更新+推公式维护一元二次式
  15. 使用Python + Selenium打造浏览器爬虫
  16. 使用Hibernate Validator来帮你做数据校验
  17. 关于在ASP.NET中使用JavaScript的建议
  18. 转:在两个页面间翻转设置Animation动作的一些总结
  19. The Web Sessions List
  20. Mybatis之是如何执行你的SQL的(SQL执行过程,参数解析过程,结果集封装过程)

热门文章

  1. 通用的业务编码规则设计实现[转:http://www.cnblogs.com/xqin/p/3708367.html]
  2. LeetCode "Binary Tree Vertical Order"
  3. linux时间管理
  4. web几个高性能框架的简单测试
  5. 216. Combination Sum III
  6. Mysql分区技术
  7. (C# ) 解析XML。
  8. FindViewByMe插件
  9. HashMap 实现原理(复习)
  10. 执行sh文件 进行MongoDB的业务逻辑导入