变量命名那点小事

简介:

代码好似程序员手中的兵器,有人使的独孤九剑,有人使的打狗棒。

最近review代码有点多,看到了一些很不“讲究”的代码。本篇打算聊聊我做code review的一点心得,先从变量命名这件小事说起吧。

 

使用简单易识别的单词

这一条在码农界应该是公认的吧,不要搞太复杂太生僻的单词。有些人偏偏喜欢炫自己的英文水平,不考虑其他同事的感受。所以起名要用一些很常见的单词,不要超过高中水平就行了。

比如需要为“成绩”起名,百度一翻译叫achievement,我们选score就好。

 

边界要准确

变量的名字要能准确涵盖它的含义,不要超出范围,也不要覆盖不到。这一点尤其在给项目或模块起名字时要注意。

拿我们公司的来举例,我见过一个项目叫17zuoye_frontend,感觉上是整个公司的前端都在里面,事实上这只是众多项目中的一个而已。

还有一个项目,用nodejs重构了前端层,结果把项目命名为nodejs_front,感觉让人摸不着边界。

名字起太小了也不行,将来加别的功能会很别扭。好比你的的招牌挂着黄焖鸡米饭,里面却硬要卖烤鸭。

 

符合语义

代码是给人看的,或许是给别人,或许是给几个月后的自己。所以描述一定要准确,不要使用语义上有明显出入的名字。

前几天review一个同事的代码,看到这么一行:clientName = true;

我当时就比较懵,这个单词明明是“客户端名称”的意思,怎么会给赋值为true呢?询问之后才知道他要在clientName为某个值的时候判断是否展示头部,为了使用方便就直接这么写了。

所谓语义就是,要符合自然语言的表述习惯。新手经常会有这样的想法,只要代码能跑通,变量和逻辑是否「语义正确」漠不关心。其实这是很不好的,这样的代码会越来越难维护,最后自己写的自己都看不懂。

说到语义还有一点,那就是不要使用太通用的单词,比如value、data这些。都表示一个值,但是完全无从知道它代表的是什么值,最好起具体的名字。

 

函数名称

有一个同事使用的单词倒是很简单,比如页面有一个选中标签页的功能,他给函数命名为select。这样的问题在于,如果页面中还有其他的选择功能该怎么办呢?在看代码的时候,光看到select完全不知道是要选什么。

所以在给函数命名的时候,我强烈推荐动-宾结构,比如selectTab、checkPrice,有动词有宾语,看代码的是就很容易能对应到页面功能上去。

 

属性名称

关于属性的命名也同样,看了名字就立马能在页面找到最好。比如你把导航栏叫nav,就不如叫leftNav好,这样我立马就知道是页面左侧的导航栏,而不是顶部。

其实这和我们的自然语言是很类似的,我说“脑袋”,你不知道我想说啥,我说“周杰伦的脑袋”,你脑海中立马就有影像了。所以属性的命名要用偏正短语,说白了就是“xxx的xxx”这样的结构。

 

以上是最近review代码时关于变量命名的一些感想,再次强调一下,不要以为程序能跑通就万事大吉了。代码是你的思维的展现,混乱的命名行为只能说明你的思维是不清晰的。 感觉有不妥的地方,立马全局替换,不留后患。


本文转自吕大豹博客园博客,原文链接:http://www.cnblogs.com/lvdabao/p/6401412.html,如需转载请自行联系原作者

相关文章
|
2月前
|
数据可视化 数据挖掘 关系型数据库
借助 MCP 赋能数据可视化,让数据‘燃’起来
在数字化时代,数据成为企业竞争的关键资源。MCP工具作为“数据中转站”和“智能翻译官”,可连接阿里云PolarDB MySQL数据库,通过拖拽操作实现零代码数据分析,降低技术门槛。结合阿里云百炼大模型,用户只需输入自然语言即可生成可视化图表,快速获取数据洞察,助力企业高效决策。
|
3月前
|
Windows
windows错误0x80070057?各种安装软件时出现参数错误0x80070057解决办法
本文介绍了Windows系统中常见的错误代码0x80070057的解决方法。该错误通常出现在安装IIS、Edge浏览器、系统更新或文件复制等操作中。文章推荐使用FixWin 11这款修复工具,帮助用户快速解决此类问题。工具支持多种Windows系统问题修复,操作简单,适合普通用户使用。
515 0
|
3月前
|
人工智能 监控 数据可视化
新媒体内容策划看板:高效内容生产的秘密武器
新媒体内容策划看板是可视化任务管理工具,用于规划选题、排期、执行及监控内容生产全流程,解决传统管理方式效率低、协作混乱等问题。核心模块包括选题库、内容日历、制作追踪和多平台分发跟踪,支持团队高效协作与数据反馈。主流工具如飞书、Notion、板栗看板各具优势,适配不同规模团队。通过集成数据指标(阅读量、转化率等)和AI辅助(智能排期、生成建议),看板可优化内容策略并形成闭环管理。未来,看板将与AI深度结合,推动内容生产智能化。
198 0
|
10月前
|
安全 Ubuntu Linux
Linux重要知识点
掌握以上Linux重要知识点可以帮助你高效地使用和管理Linux系统。这些知识不仅在日常使用中非常重要,而且在系统维护、网络配置和安全管理等方面也非常关键。通过不断实践和深入学习,可以进一步提高对Linux系统的理解和掌握。
224 22
|
10月前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
253 28
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
298 4
|
数据挖掘 计算机视觉 Python
SciPy图像处理技巧:图像增强与特征提取
【4月更文挑战第17天】本文介绍了如何使用SciPy进行图像增强和特征提取。通过调整亮度、对比度和伽马校正实现图像增强,示例代码展示了相关操作。同时,利用Sobel算子进行边缘检测和Laplacian of Gaussian (LoG) 进行角点检测,以提取图像特征。虽然SciPy不是专业的图像处理库,但其数值计算能力在图像分析中仍有一定价值,可与其他图像处理库结合使用。
|
算法 机器人 Java
常用的启发式算法
常用的启发式算法
844 0
|
Kubernetes 监控 负载均衡
构建基于Spring Cloud向Service Mesh框架迁移的解决方案及思路
作为新一代微服务架构体系,Service Mesh 技术有效地解决了 Spring Cloud 微服务架构和服务治理过程中的痛点问题,一经推出便引起了很大的反响。今天我们就针对构建基于 Spring Cloud 向 Service Mesh 框架迁移过程中的诸多问题展开讨论,尽可能提供一套完善的解决方案和迁移思路,供大家参考。
1113 2
构建基于Spring Cloud向Service Mesh框架迁移的解决方案及思路
|
存储 算法 安全
什么是 Hash 算法?
散列算法(Hash Algorithm),又称哈希算法,杂凑算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件。
什么是 Hash 算法?