繁体   English   中英

为什么需要 javascript 编码约定?

[英]Why is there a need for javascript coding conventions?

假设我必须编写一个 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. 恕我直言,额外的空白行没有任何贡献,但我可能不会因为它们而死。 然而,同样有效的问题是下载速度,该建议使下载速度变得更糟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM