为什么需要JavaScript编码约定

Why is there a need for javascript coding conventions?

本文关键字:编码 约定 JavaScript 为什么      更新时间:2023-09-26

假设我必须编写一个javascript函数:

function(){
    var a=1;
    var sum=1;
    for(var i=0;i<6;i++){
        sum=sum+a+1;
    }
    console.log(sum);
}

有人建议我这样写这个函数:

function () {
   var a = 1;
   var sum = 1;
   for (var i = 0; i < 6; i++) {
      var sum = sum + a +1;
   }
   console.log(sum);
}

有了更多的空白,我知道这个规则,但我不知道它是如何工作的,或者我可以从中受益什么?

什么是好的风格是一个意见问题,但从一般意义上讲,选择一些风格并在整个代码中始终遵循它会使它更容易阅读(无论是对其他人还是对你稍后再回来时)。

根据我的经验,大多数人发现使用额外的空格更容易阅读代码,如第二个示例所示。

我不喜欢在function()之间留一个空格.或者,在有函数名称的地方,我不会在名称和括号之间放置空格:function someName() .

另请注意,使用具有语法突出显示的现代代码编辑器(如 Stack Overflow),读取没有空格的代码比以前容易得多。比较以下两个:

for(var i=0;i<6;i++)

for(var i=0;i<6;i++)

阅读和编辑后者,全部黑白,真的让我很恼火,但我不介意彩色版本。不过,我仍然更喜欢带有额外空间的它。

我会在您的函数中进行一些其他更改:

function() {
    var a = 1,
        sum = 1,
        i;
    for(i = 0; i < 6; i++){
       sum += a + 1;
    }
    console.log(sum);
}

编码风格的好处是增强了可读性。你决定坚持什么风格并不重要,只要你坚持统一的风格,并且可以与你的同事就其可读性达成一致,这并不总是那么容易。

这些编码约定适用于人类,它们提高了可读性。假设我写了一个这样的表达式:

x=(a*b/2)+m-n+c*(d/e);

它看起来笨拙且难以阅读。如果我们像这样在运算符周围使用空格会更容易理解:

x = (a * b / 2) + m - n + c * (d / e);

再次使用空行通过表示部分来提高可读性。例如:

function foo() {
    var a;
    var b;
    // a blank line here to specify the end of variable declarations
    if (some_cond) {
    } else if (another_cond) {
    }
    // another blank line to specify end of some logic
    //more codes here;
}

如果您不遵循这些准则,并且所有团队成员都不同意某些约定,那么长时间维护一个大项目将非常困难。

最后请注意,这些约定不适用于编译器,而是针对人类。这就是为什么它被称为编码指南,而不是语言语法。

也许你应该阅读更多关于javascript闭包的信息,你可以遵循"Google Javascript Style Guide"。

编码时遵循一些统一的风格指南可以使代码更易于阅读,并帮助您编写漂亮的代码,以及其他人理解(并喜欢!)您的代码。

当然,网络上有大量资源(只需在谷歌上搜索一段时间,您就可以获得一些javascript指南或指南),但是这个非常简单,简单且完整:

http://javascript.crockford.com/code.html

这不是

规则。这只是编码约定风格。如果你不想,你不需要跟随。但这种风格可以使你的代码更具可读性、更易于维护和更简洁。对我来说,我更喜欢有空间而不是狭窄的字母。同样,这不是规则。

编码风格总是非常个性化;一个人喜欢精简的代码,这样他们就可以在一个屏幕上看到尽可能多的内容,另一个人需要在单独的行上看到左大括号和右大括号,等等。

当只为自己编码时,您应该选择最适合您的代码。但是,当您开始在团队中工作并且其他人必须维护您的代码,反之亦然时,就一种编码风格达成一致变得很重要......这可能很难。

我参加过编码风格的讨论,他们非常不舒服,因为你放弃了一些个人偏好,尽管是为了更大的利益。短暂的不适后,你会习惯的;-)

  1. 第二个版本不等同于第一个版本,因为它声明了一个内部的"sum"变量,除非Javascript没有按照它在罐子上所说的那样做。

  2. 恕我直言,额外的空白行没有任何贡献,但我可能不会死在关于它们的沟里。然而,一个同样有效的问题是下载速度,该建议使下载速度变得更糟。