变量命名那点小事

简介:

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

最近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,如需转载请自行联系原作者

相关文章
|
4天前
|
人工智能 运维 安全
|
2天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
10天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
834 109
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
442 12
|
3天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
4天前
|
机器学习/深度学习 传感器 算法
Edge Impulse:面向微型机器学习的MLOps平台——论文解读
Edge Impulse 是一个面向微型机器学习(TinyML)的云端MLOps平台,致力于解决嵌入式与边缘设备上机器学习开发的碎片化与异构性难题。它提供端到端工具链,涵盖数据采集、信号处理、模型训练、优化压缩及部署全流程,支持资源受限设备的高效AI实现。平台集成AutoML、量化压缩与跨硬件编译技术,显著提升开发效率与模型性能,广泛应用于物联网、可穿戴设备与边缘智能场景。
188 127