1.变量命名的注意事项

1)可理解性

变量要望文知义,看到这个变量不用看其他的代码就知道这个变量表示什么意思

好的变量命:currentDate, heartRate

糟糕的变量名:newButton, peopleCnt

2)可读性

变量不仅要可理解,还要容易读,要是变量像这样:numberOfShitsInChinaMansFootballNationalTeam,太长了,会疯掉的

研究发现,变量名的长度在8~20各字符的长度时是易于调试的,因此上面的变量可以改为numShitsInTeam, 在可理解性和可读性之间做一个平衡

2.变量命对作用域的影响

短的变量名也不一定不好,像for i in healthInfos:,i代表一个临时的数据,作用域仅限制在这个for循环里面

研究表明:较长的名字适用于很少用到的变量或全局变量,而较短的名字适用于局部变量或者循环变量。

不过,短的变量命常常会带来一些麻烦,因此,作为一项防御式编程策略,应尽量避免使用短的变量名

3.变量名中的计算值限定词

代码里经常会出现表示计算结果的变量,总额、平均值、最大值、最小值等,要用total,average,max,min等限定词,那么请记住把限定词加在名字的最后。

这种方式的优点在于:


1)突出主要含义

对于revenueAverage,阅读者第一眼看到的是revenue,就知道这个变量表示的是收益;如果用averageRevenue,阅读者第一眼看到的是average,只知道这是平均值,是什么的平均值呢?不知道!这是因为在averagerevenue里面,revenue是主体,表示主要含义,average只是修饰词,因此把主体放在前面,更有利于理解


2)增加一致性

如果之后还有类似的变量revenueTotal, revenueMax, revenueMinexpenseTotal, expenseMax,就会显得很工整

4.为特定类型的数据命名

1)为for循环中的变量命名

对于python的for循环,不要使用i,info等不表示具体含义的临时变量,因为这样阅读者无法根据变量名猜测变量的意义

好的示例:for health_info in health_infos

糟糕的示例:for i in health_infos

其中health_infos表示一个存储用户健康数据的数组,for health_info in health_infos阅读者一眼就能看出来health_info代表某一个用户的健康数据

2)为状态变量命名

不要使用单纯的flag来命名状态变量

CHECKLIST

1)变量名完整并准确地表达了变量所代表的含义吗?

2)变量名反映了现实世界的问题而不是编程语言方案吗?

3)变量名是否过长?

4)如果有计算限定词,它被放到变量名的后面了吗?

5)for循环中的变量名能表示具体含义吗?

6)命名规则能够区分局部数据、类的数据和全局数据吗?

7)所有单词的缩写方式一致吗?

<<代码大全>>阅读笔记之二 变量名的力量的更多相关文章

  1. <<代码大全>>阅读笔记之一 使用变量的一般事项

    一.使用变量的一般事项 1.把变量引用局部化 变量应用局部化就是把变量的引用点尽可能集中在一起,这样做的目的是增加代码的可读性 衡量不同引用点靠近程度的一种方法是计算该变量的跨度(span) 示例 a ...

  2. [置顶] Linux协议栈代码阅读笔记(二)网络接口的配置

    Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...

  3. Linux协议栈代码阅读笔记(二)网络接口的配置

    Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...

  4. Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

    前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...

  5. Apollo源码阅读笔记(二)

    Apollo源码阅读笔记(二) 前面 分析了apollo配置设置到Spring的environment的过程,此文继续PropertySourcesProcessor.postProcessBeanF ...

  6. 《梦断代码Dreaming In Code》阅读笔记(二)

    这段时间一口气读了5章,所以想着现在一块写阅读笔记. 在阅读的这段时间,我一直是晚上进行阅读,很多时候都是读完一看已经一个小时了,效果还不错.闲话不表,说说阅读心得. 关于底层语言或是低级语言,我之前 ...

  7. 【unix网络编程第三版】阅读笔记(二):套接字编程简介

    unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...

  8. 《大象Think in UML》阅读笔记之二

    Think in UML阅读笔记(二) 上一次读到面向对象和面向过程的区别和各自的优势,结合实例分析了面向过程在面对大数据的时候,已经不足以满足人们的需求,所以引入了面向对象,面向对象的方法把世界看做 ...

  9. [代码]--ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误

    今天在oracle中执行插入语句的时候报了一个奇怪的错误,在程序中报的错误是ORA-01745: 无效的主机/绑定变量名,网上一查说是缺失逗号,在查询分析器执行的时候报缺失的逗号,仔细看了一下也没有缺 ...

随机推荐

  1. Java编程思想(四)初始化和清除

    4.1用构建器自动初始化 若某个类中有一个构建器,那么在创建对象时,Java会自动调用哪个构建器    在Java中构建器的名字必须与类名相同,这样可以保证这样一个方法惠子初始化期间自动调用: 利用构 ...

  2. 《MIT 6.828 Homework 2: Shell》解题报告

    Homework 2的网站链接:MIT 6.828 Homework 2: shell 题目 下载sh.c文件,在文件中添加相应代码,以支持以下关于shell的功能: 实现简单shell命令,比如ca ...

  3. Docker daemon.json 的配置项目合集

    这几天看了一点docker相关的东西, 在学习中: 看了下园友的blog 感觉很好 这里 学习一下. https://www.cnblogs.com/pzk7788/p/10180197.html 其 ...

  4. 自然语言处理工具HanLP-基于层叠HMM地名识别

    本篇接上一篇内容<HanLP-基于HMM-Viterbi的人名识别原理介绍>介绍一下层叠隐马的原理. 首先说一下上一篇介绍的人名识别效果对比: 1. 只有Jieba识别出的人名 准确率极低 ...

  5. 关于keepalived执行后日志狂刷IPVS: Can't initialize ipvs: Protocol not available的问题

    安装了keepalived+lvs,达到了高可用的负载均衡,但是今天再启用的时候发现keepalived不正常,通过 /var/log/messages 查看系统日志发现狂刷 IPVS: Can't ...

  6. 在Linux环境下的对启动服务进行停止或在运行

    下面我以elasticsearch服务为例进行: 第一种: 1.前台运行: 运行结果 2.ctrl+c停止运行   第二种:后端运行 1.后端运行的命令./elasticsearch -d 这种启动后 ...

  7. SpringBoot导入mail依赖报错

    报错:Missing artifact org.springframework.boot:spring-boot-starter-mail:jar:2.0.3 之前导入log4j时报的一样的错误,最后 ...

  8. 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈

    P2178 [NOI2015]品酒大会 题目链接 https://www.luogu.org/problemnew/show/P2178 题目描述 一年一度的"幻影阁夏日品酒大会" ...

  9. urllib的简单使用

    首先需要导包 Import urllib.request 这是一个简单的网站例如:发起请求Response = urlib.request.urlopen("http://www.baidu ...

  10. python 识别图像主题并切割

    两种办法,一种是用百度的API,效果还可以,不过好像每天有50次的调用的限制 from aip import AipImageClassify import cv2 """ ...