忍者代码
学而不思则罔,思而不学则殆。—— 孔子
过去的程序员忍者使用这些技巧,来使代码维护者的头脑更加敏锐。
代码审查大师在测试任务中寻找它们。
一些新入门的开发者有时候甚至比忍者程序员能够更好地使用它们。
仔细阅读本文,找出你是谁 —— 一个忍者、一个新手、或者一个代码审查者?
注意:检测到讽刺意味
许多人试图追随忍者的脚步。只有极少数成功了。
简洁是智慧的灵魂
把代码尽可能写得短。展示出你是多么的聪明啊。
在编程中,多使用一些巧妙的编程语言特性。
例如,看一下这个三元运算符 '?':
// 从一个著名的 JavaScript 库中截取的代码
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
很酷,对吗?如果你这样写了,那些看到这一行代码并尝试去理解 i 的值是什么的开发者们,就会有一个“快活的”的时光了。然后会来找你寻求答案。
告诉他短一点总是更好的。引导他进入忍者之路。
一个字母的变量
道隐无名。夫唯道善贷且成。—— 老子(道德经)
另一个提高编程速度的方法是,到处使用单字母的变量名。例如 a、b 或 c。
短变量就像森林中真正的忍者一样,一下就找不到了。没有人能够通过编辑器的“搜索”功能找到它。即使有人做到了,他也不能“破译”出变量名 a 或 b 到底是什么意思。
……但是有一个例外情况。一个真正的忍者绝不会在 "for" 循环中使用 i 作为计数器。在任何地方都可以,但是这里不会用。你随便一找,就能找到很多不寻常的字母。例如 x 或 y。
使用一个不寻常的变量多酷啊,尤其是在长达 1-2 页(如果可以的话,你可以写得更长)的循环体中使用的时候。如果某人要研究循环内部实现的时候,他就很难很快地找出变量 x 其实是循环计数器啦。
使用缩写
如果团队规则中禁止使用一个字母和模糊的命名 — 那就缩短命名,使用缩写吧。
像这样:
✿ list -> lst
✿ userAgent -> ua
✿ browser -> brsr
✿ ……等
只有具有真正良好直觉的人,才能够理解这样的命