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