在我的工作组中有一个关于 JavaScript 编码的讨论。有些人认为我们应该使用长名称以获得更好的可读性;其他人认为短名称应该有利于相同的在线位。
通常,它与编码约定有关。一方面认为诸如“fAutoAdjustWidth”之类的标识符是可以的,而另一些则更喜欢“fAtAjtW”。
那么,更好的方法是什么?我们是否应该为了性能而牺牲可读性?
在我的工作组中有一个关于 JavaScript 编码的讨论。有些人认为我们应该使用长名称以获得更好的可读性;其他人认为短名称应该有利于相同的在线位。
通常,它与编码约定有关。一方面认为诸如“fAutoAdjustWidth”之类的标识符是可以的,而另一些则更喜欢“fAtAjtW”。
那么,更好的方法是什么?我们是否应该为了性能而牺牲可读性?
使其可读,如果您觉得生成的 JS 文件太大,请在部署生产版本之前使用许多 JS 压缩器之一,同时维护具有长名称的开发版本。
顺便提一句。如果您真的担心带宽,请使用mod_deflate。
如果您担心线路上的位,您可以随时在您的代码上运行压缩程序。然后,您可以使用长名称进行开发,并且可以使用具有同等功能的小得多的文件进行发布。Yahoo YUI Compressor看起来像是进行空白压缩和令牌压缩。
这些人是否提倡不在他们的代码中写注释?变量名称要完全清晰且具有描述性。
而其他人更喜欢“fatAjtW”
即使“在线比特”是一个问题(事实并非如此),这样的命名约定也会使代码在项目工作的第一周后完全无法维护。
阅读代码几乎是不可能的,在编写代码时,人们将不断地考虑诸如“'fAutoAdjustWidth' 缩写为 'fAtAjtW' 还是 'fAutAtW'?”之类的事情。在编写代码时要付出巨大的精神负担,这将导致生产力大大降低。
最重要的是,在 Javascript 中,每个输入错误的名称都会获得一个新变量,这一事实加剧了问题!
使用大变量名,因为它们对程序员有帮助。
要通过网络节省位,请在将 Javascript 部署到生产服务器之前将其缩小。 Dean Edwards 的打包程序有一个压缩变量名的选项,这对您来说似乎是两全其美的选择。
使用足以很好地描述变量和函数的长名称。
许多人需要短名称的原因之一是使文件更小,但您可以在在线上传时通过工具来做到这一点。
也许担心的不是线路上的位,而是读取和重新/查看代码的开销。
我倾向于在函数内部使用短名称,并尽可能使函数名称尽可能长,但在不失去有用意义的情况下尽可能短。
毫无疑问,这是一种权衡。这取决于您是希望您的代码类似于自然语言还是更加隐式和紧凑。
一些前缀变量名称以将上下文信息注入其中。我说,如果有必要,IDE 应该提供注入功能,例如通过上下文符号在代码上进行可视化覆盖。
下一版本的 Visual Studio 将通过深入到编辑器本身的细粒度可扩展性机制,使此类注释操作变得更加容易。我还没有使用 Visual Studio 来编辑 Javascript。
我现在看到您的担忧确实是空间权衡。这永远不应该成为问题。总是总是喜欢可读性而不是在线上的位,尤其是。正如其他评论员所指出的那样,因为存在压缩。
我唯一要补充的是上面的内容,即有时使用紧凑的名称而不是过长的名称更容易理解。但是,要正确命名短名称更难。根据我的经验,长名称更容易、更快捷。
短名称的原因不应该只是数据压缩认知效率。有效的是个人的。
一方面认为诸如“fAutoAdjustWidth”之类的标识符是可以的,而另一些则更喜欢“fAtAjtW”。
'fAtAjtW' 是一种无法阅读、无法打字的恐怖。说真的,有人喜欢吗?搞笑且难以记住——是“AtAjt”还是“AutAdj”……?
'autoAdjustWidth' 将是一个合适的完整属性名称。(我根本不相信 'f' 前缀表示法,但这是另一个问题。)有时你想要一个短命变量的名字很短(例如,一个小循环中的临时变量),在这种情况下我'会亲自去'var aaw'而不是上面的噩梦。
至于性能,不会有任何区别。JavaScript 不关心变量名称的长度,并且假设您在将脚本压缩到浏览器的途中,压缩将消除较短名称的任何传输优势。
我强烈建议不要使用短标识符。仅阅读您的示例就可以看出,当使用 fAtAjtW 之类的名称时,突然需要更多文档。在某些时候,它会变得几乎无法维护,这只是为了节省一些要传输的字节。
如果考虑“短”名称的唯一原因是使生成的脚本更小,从而节省一些带宽,我建议使用 gzip 压缩,这将为您节省超过几个字节的标识符。
谁认为“fAtAjtW”更可取,是在他们的编程中使用某种药理学方法。fAutoAdjustWidth 非常精细,非常谨慎。Javascript 库不使用 fAtAjtW 之类的名称是有原因的。如果您担心尺寸,那么您的担心可能是错误的。但是,我建议使用某种缩小器。但是,也就是说,不要使用太长的时间;可能超过 25-30 个字符的任何内容都有些远。
在不影响代码可读性的情况下使用较小的名称。更大的名字很好,但尽量只在确实让自己和他人更容易理解的地方使用它们。最后(如其他答案所述)缩小您的代码,和/或打开某种服务器压缩机制,如 apache 的 mod_gzip 或 mod_deflate 以减少流经线路的位数。
话虽如此,我会优先考虑可读性而不是变量名的紧凑性。
长而描述性的名称。
并尝试使方法尽可能独特。这有助于导航。如果您想查找特定方法的所有用法,则与具有相同名称的另一个方法发生冲突的可能性较小。
现代 Javascript IDE 还可以进行方法重构(参见:http ://blue-walrus.com/2013/08/review-javascript-ides/ )。如果方法被调用相同,这将非常困难。