关于起名
从机器的视角来看,变量、函数、类……的名字,是用来区别其它事物的。从人的视角来看,区别其它事物只是对名字最基本的要求,名字还要能帮助读者理解代码。
为了让读者更好地理解代码,起名时下面两点需要注意:
- 避免歧义 - 让读者正确理解
- 说明「what」而不是「how」- 提高读者理解效率
1. 避免歧义
const limitOfLoginTries = 5;
这个变量用于定义:密码输入错误多少次,用户将会被锁定。
到底 错 4 次会锁定 还是 错 5 次会锁定?limit
在是否包含边界值的问题上存在歧义。这里用 max
比 limit
好。
const getPath = (start, end) => {
// expensive calculation
......
}
这个函数用于找出一条 起点到终点 的路径。
get
操作常见于从 map
中取一个元素。潜意识会觉得它是一个轻量级的操作。但示例函数会执行复杂的计算。函数调用者容易掉以轻心,重复调用,最终导致性能问题。这里用 caculate
比 get
好。
上述两个例子来源于《编写可读代码的艺术》这本书。
2. 说明 what 而不是 how
const moneyMultiplyRatio = money * 0.027;
钱乘以一个比例,名字和代码说的一样。看完了还是不知道这个变量想干吗。如果想表达利息,用 interest
更好。
用变量名表达变量的意图。给一段代码起个名字,表达代码的意图,就是 function
。
把大象装冰箱,阅读理解 3 行名字 显然比 100 行实现细节 更有效率。
refrigerator.open();
refrigerator.put(elephant);
refrigerator.close();
这和函数式编程中申明式的思想一致。说明要干什么「what」,隐藏技术细节「how」。写的人思路更清晰,读的人理解更轻松。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)