关于起名

从机器的视角来看,变量、函数、类……的名字,是用来区别其它事物的。
从人的视角来看,区别其它事物只是对名字最基本的要求,名字还要能帮助读者理解代码。javascript

为了让读者更好地理解代码,起名时下面两点须要注意:java

  1. 避免歧义 - 让读者正确理解
  2. 说明 what 而不是 how - 提升读者理解效率

1. 避免歧义

const limitOfLoginTries = 5;

这个变量用于定义:密码输入错误多少次,用户将会被锁定。编程

到底 错 4 次会锁定 仍是 错 5 次会锁定?
limit 在是否包含边界值的问题上存在歧义。这里用 max 更好。函数式编程


const getPath = (start, end) => {
  // expensive calculation
  ......
}

这个方法用于计算起点与终点间的路径。函数

get 操做常见于从 map 中取一个元素。
潜意识会以为它是一个轻量级的操做。
但示例方法会执行复杂的计算。方法调用者容易掉以轻心,重复调用,最终致使性能问题。
这里用 caculate 更好。性能

上述两个例子来源于《编写可读代码的艺术》这本书。rest

2. 说明 what 而不是 how

const moneyMultiplyRatio = money * 0.027;

钱乘以一个比例,名字和代码说的同样。
看完了仍是不知道这个变量想干嘛。
若是是利息的话,用 interest 要好得多。code


用变量名表达变量的意图。
给一段代码起个名字,表达代码的意图,就是 functionip

把大象装冰箱,阅读理解 3 行名字 显然比 100 行实现细节 更有效率。get

refrigerator.open();
refrigerator.put(elephant);
refrigerator.close();

这和函数式编程中申明式的思想一致。

说明要干什么-what,隐藏技术细节-how。 写的人思路更清晰,读的人理解更轻松。

相关文章
相关标签/搜索