为魔数命名
可读性
魔数(Magic Number)指的是缺乏明确说明而直接插入的数值。
例如,直接使用 404
来表示未找到(Not Found)的 HTTP 状态码,或者直接使用 86400
秒来表示一天的时间。
📝 代码示例
下列代码是一个函数,当点击点赞按钮时重新获取点赞数量。
typescript
async function onLikeClick() {
await postLike(url);
await delay(300);
await refetchPostLike();
}
👃 闻代码
可读性
这段代码中的 delay
函数传递了一个值 300
,但无法从上下文推测该值的具体用途。 如果不是该代码的编写者,就无法理解 300ms 等待的是什么。
- 是在等待动画完成?
- 是在等待点赞反映时间?
- 是不是忘了删测试代码?
当多名开发者共同修改同一段代码时,可能无法明确原意,从而导致代码被修改成不符合预期的结果。
INFO
这个 Hook 也可以从 内聚性 的角度来考虑。
✏️ 尝试改善
为了更准确的表达数字 300
的含义,可以将其声明为常量 ANIMATION_DELAY_MS
。
typescript
const ANIMATION_DELAY_MS = 300;
async function onLikeClick() {
await postLike(url);
await delay(ANIMATION_DELAY_MS);
await refetchPostLike();
}
🔍 深入了解
魔数也可以从内聚性角度来审视。请参考 消除魔数提高内聚性 一文。