独立日记 2015年10月3日 变量名的力量
来源:互联网 发布:java监听器使用方法 编辑:程序博客网 时间:2024/05/21 21:41
呼,最近甚是孤独啊,整个公司就自己一个做技术的,没人指导,没人结伴编程,上下班没人一起讨论技术,没人互传种子,所以就买了本《代码大全》准备开啃。
到目前为止只看了第十一章《变量名的力量》
书上的内容就不多说了,只说些书上推荐的命名方式,和自己最终定的命名方式。
1.选择一个更详尽名字
先做个比较:
代码1:
x = x - xx
xxx = xxx + 1
代码2:
profit = income - cost
count = count + 1
以上的代码一眼就能看出来哪个是你希望在你项目中看到的,所以给一个变量名定义有意义的名字很重要!!!很重要!!!很重要!!!
ok再来几组:
描述好名字坏名字 当前的日期:currentDate,todaysDate;current,x,x1,date; 每行的页数:linesPerPage;lines,l,x,lpp;
以上坏名字中的date,lines看上去不错,但是还是没有currentDate和linesPerPage描述得更详尽。
2.好的变量名通常表示的是what?而不是howto
举个栗子:
一条员工数据记录的名字可以为inputRecord或者employeeData第一个名中,input(输入),record(记录)这些为计算机术语,是howto。第二个名字,则描述问题,是what。
以下这段内容参考自:读书笔记:第11章_变量名的力量:选择好的变量名
比如员工数据记录作为一次运算的输入,你可能会命名为inputRecord,这个输入有多个呢?你会编号为inputRecord1,inputRecord2……吗?到后来可能你自己也不知道哪对哪了。所以不要针对计算机来命名,命名应该反映出问题本身。员工数据记录命名为employeeData最好了,这样万一还有一个雇主的数据记录,就可以用employerData来代替inputRecord2了。
3.变量名的长度
书中推荐10-16个或者8个到20个,但不是硬性标准。
来个栗子:
numberOfPeopleOnTheUsOlympicTeam(太长)
noo(太短)
numTeamMenbers(正好)
短名字并不总是不好的,比如作用于循环变量或者局部变量,简单的计数器for (int i = 1,i ……. 这种变量只用于几行代码之内。但是双重循环使用i,j是勉强可以的,但是一不小心把i写成了j,把j写成了i,那就太好玩了,哈哈。所以双重或多重循环中推荐使用rowIndex,columnIndex这种意义详尽的变量。
4.变量名中的计算限定词
比如:Sum,Total,Average,Max,Min,Record,String,Pointer等这样的限定词来修改某个名字的时候推荐加到该名字的最后,例如:incomeTotal。这时候,变量名中最重要的部分income(收入),则显得最为突出。有的人喜欢写成,totalIncome,这样也没有不对的,但是如果程序中同时出现了incomeTotal和totalIncome那就太糟糕了,bullshit!!!
so,不管你时用限定词后缀还是前缀,要保持一致性。
5.对仗词
对仗词要使用准确
begin/end,first/last,locked/unlocked,min/max,next/previous,old/new,
opened/closed,visible/invisible,source/target,source/destination,up/down
6.状态变量命名
if (flag)...
if (statusFlag & 0x0F)...
flag = 0x1;
statusFlag = 0x80;
我凑,什么是flag,0x1又tm是什么!!!!!!!
if (dataReady) ...
if (characterType & PRINTABLE_CHAR)...
if (reportType == ReportType_Annual)...
dataReady = true
characterType = CONTROL_CHARACTER;
reportType = ReportType_Annual;
天还是那么的蓝…
以上的补充:
// values for CharacterType 常量/宏的命名
const int CONTROL_CHARACTER = 0x80;
#define PRINTABLE_CHAR 0x01
// values for ReportType 枚举变量的命名
enum ReportType {
ReportType_Daily,
ReportType_Annual,
}
6.为临时变量命名
做个比较
a = 5
aa = a * a
aaa = a * a * a
尼玛…
// a cube
length = 5
square = length * length
volume = length * length * length
7.为布尔变量命名
done,success,found胜过isDone?isSuccess?isFound?
尽量用前者。
不要使用双重否定,例如if not notFound then ….
8.自己的命名规则
命名规则要有,有比没有强。好处一大堆,提升交流效率,团队协作等。
本人使用lua和c++所以命名规则如下。
内置类型:
nCurrentIndex(整数类型)
dLength(小数)
cGrade(字符)
strName(字符串)
pObject(指针)
成员变量:
m_pHero
m_nEnemyCount
全局变量:
g_nScore
类/类型:
TypeName/ClassName
常量/宏:
CONSTANT,MACRO
枚举类型:
EnumeratedTypes { // 常用复数
Base_EnumeratedType
}
成员方法:
void memberFunction();
void Class::memberFunction(){}
函数:
void CLanguangeFunction() {}
最后摘抄一下书上的Key Points
(1) 好的变量名是提高程序可读性的一项关键要素;
(2) 名字要尽可能地具体,但也不要太长;
(3) 命名规则应该能够区分局部数据、类数据还是全局数据,要注意前后一致;
(4) 尽量不要用缩写,真的要用的话,就用大家熟知的,比如CCTV等;
(5) 代码的阅读次数远远多于编写的次数,所以确保你取的名字更侧重于阅读方便而不是编写方便。
其它:http://blog.csdn.net/xujinsmile/article/details/8694026
转载请注明地址:独立日记
- 独立日记 2015年10月3日 变量名的力量
- 独立日记 2015年12月24日 day3 平安夜
- 独立日记 2015年12月25日 day4 圣诞节
- 独立日记 2015年12月27日 day6
- 独立日记 2015年12月31日 day10
- 独立日记 2015年1月2日 day12
- 独立日记 2016年1月3日 day13
- 独立日记 2015年9月13日 提交到appstore后的总结
- 变量名的力量
- 变量名的力量
- 变量名的力量
- 变量名的力量
- 变量名的力量
- 变量名的力量
- 独立日记 2016年1月1日 day11
- 独立日记 2015年8月19日 quick 3.5 + sublime环境搭建
- 独立日记 2015年12月23日 day2 小练习
- 独立日记 2015年12月26日 day5 有限状态机 FSM
- ksh 文件测试
- Aspects 源代码解析<一>
- 【Pascal】 天软提取期权数据代码
- 基础知识点
- Find the Duplicate Number【287】
- 独立日记 2015年10月3日 变量名的力量
- BestCoder Round #58 (div.2)Card Game(hdu5494)
- android--day02(UI、事件)
- 第二层内容:枚举
- 求出长度为1, 2, 3, 4, 5....的字符串最大出现次数 后缀数组 UVA 11855 - Buzzwords
- CSDN下载积分获取
- sql性能优化 - sql查询优化
- 网上看到的X度移动端笔试题
- Android ListView多布局复用ArrayIndexOutOfBoundsException问题