《Code Complete》ch.11 变量名的力量
What?
如何给变量命名
Why?
- 易读(你三个月前的代码=别人的代码),易记,恰如其分
- 整齐的命名具有美感,强迫症患者居家旅行杀人放火之必备
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)可理解性 变量要望文知义,看到这个变量不用看其他的代码就知道这个变量表示什么意思 好的变量命:currentDate, heartRate 糟糕的变量名:newButton ...
- Programming | 变量名的力量
命名准则 变量名要完全,准确的描述变量所代表的事物,一般而言,对变量的描述就是最佳的变量名.避免x,temp,i等泛泛而谈的变量名. 比如对于矩阵的循环,matrix[row][col]就比m[i][ ...
- 《Code Complete》ch.16 控制循环
WHAT? 反复执行的代码片段(你是第一天学编程吗) WHY? 知道如何使用及何时使用每一种循环是创建高质量软件的一个决定性因素 HOW? 检测位于循环开始/循环结尾 带退出的循环 进入循环 只从一个 ...
- 使用VS Code开发TypeScript--定义变量推荐使用let
使用VS Code开发TypeScript--定义变量推荐使用let 目录 作用域规则 JavaScript的严格模式 let与var的区别 作用域规则 一直以来我们都是通过var关键字定义JavaS ...
- VS code 中的各种变量 ${file},${fileBasename}
VS code 中的各种变量 ${file},${fileBasename} 2017年08月24日 11:14:07 bailsong 阅读数:7108 from: https://blog. ...
- code complete part1
最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多 ...
- 通过反射将变量值转为变量名本身ZZ
这是.NET反射的一个有趣小例子: 通过反射将变量值转为变量名本身. 当然要先添加命名空间:using System.Reflection; 示例代码如下: class Program { st ...
- eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?
对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情.如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助. eclipse代码里面的代码提示功能默认是关闭的,只有输入“. ...
- Code Complete阅读笔记(一)
代码大全也读了好几个月了,一开始读中文版,到现在慢慢尝试着读原版,确实感受到了"每天进步一点点"的魅力.遗憾的是没有从一开始就做阅读记录,总有不能尽兴和思路不清之感.确实,就像项目 ...
随机推荐
- Jquery ajax提交表单几种方法详解
[导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的 ...
- sql2008读取excel
环境:win7(64位)+sql2008 sql语句: --启用Ad Hoc Distributed Queries: reconfigure reconfigure --使用完成后,关闭Ad Hoc ...
- HTML 标题
在 HTML 文档中,标题很重要. HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <h1> 定义最大的标题.<h6 ...
- HTML 元素
HTML 文档是由 HTML 元素定义的. HTML 元素 HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码. 开始标签 元素内容 结束标签 <p> ...
- Discuz!NT 3.9.913 Beta DIY过程
前提: 论坛的源码版本为dnt_3.9.913_sqlserver_beta.zip,以下例子都以这个版本为原型修改 dnt_3.9.913数据字典:下载 目前(2013年10月21日)官网的asp. ...
- php计算字符串长度:utf8编码,包含中文
php计算字符串长度:utf8编码 中文当作1个字符处理(strlen默认当作两个字符) 上函数: /** * 计算 UTF-8 字符串长度 * * @param string $str * @ret ...
- Win7系统安装Centos7.0双系统(二)
4.6语言选择
- 3. Map与Tuple
一. Map 对偶 (1)对偶是一个映射.多个对偶形成map (2)对偶的表示:(k,v)或者k->v Map(哈希类型) (1)map的声明与查询 scala> val map1 = M ...
- [物理学与PDEs]第3章习题参考解答
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场 [物理学与PDEs]第3章习题2 仅受重力作用的定常不可压流理想流体沿沿流线的一个守恒量 [物理学与PDEs]第3章习题3电磁场的矢势在 Lo ...
- 远程调用jboss as 7上部署的ejb出现No EJB receiver available for handling 异常
昨天倒腾了一天终于配置好了jboss as 7的域,今天又倒腾了一整天在上面部署了个EJB,然后试了一个利用JNDI来进行远程调用.下面记录一下过程中那些乱七八糟的问题: 首先是这个jboss-cli ...