Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的编码约定:括号之间使用空格_Javascript - Fatal编程技术网

Javascript中的编码约定:括号之间使用空格

Javascript中的编码约定:括号之间使用空格,javascript,Javascript,根据JSHint,Javascript程序员不应该在第一个括号之后和最后一个括号之前添加空格 我已经看到很多优秀的Javascript库添加了空格,如下所示: ( foo === bar ) // bad according to JSHint 而不是这样: (foo === bar) // good according to JSHint 坦率地说,我更喜欢第一种方式(更多的空间),因为它使代码更可读。有没有强烈的理由选择JSHint推荐的第二种方式?选择其中一种方式的技术原因很

根据JSHint,Javascript程序员不应该在第一个括号之后和最后一个括号之前添加空格

我已经看到很多优秀的Javascript库添加了空格,如下所示:

( foo === bar )  // bad according to JSHint 
而不是这样:

(foo === bar)   // good according to JSHint 
坦率地说,我更喜欢第一种方式(更多的空间),因为它使代码更可读。有没有强烈的理由选择JSHint推荐的第二种方式?

选择其中一种方式的技术原因很少,如果有的话——这些原因几乎完全是主观的

在我的情况下,我会使用第二种格式,原因很简单:

  • 它完全可读,并且遵循Javascript祖先语言中的绝大多数格式约定

  • JS文件下载大小很重要[尽管缩小当然可以解决这个问题]

  • 我一直都是这样做的

  • 引述:

    (句点)和
    (左括号)和
    [
    (左括号)之外的所有二进制运算符都应与其操作数之间用空格分隔

    以及:

    函数名与其参数列表中的
    (左括号))之间不应有空格


    我使用JSHint删除了这个代码片段,但它没有给出这样的建议:

    if( window )
    {
       var me = 'me';
    }
    

    我更喜欢第二种格式。然而,也有一些编码风格标准坚持第一种格式。考虑到javascript通常作为源代码传输(例如,任何客户端代码),人们可以看到它比其他语言的情况稍强一些,但只是稍微强一些

    我觉得第二个更具可读性,你觉得第一个更具可读性,而且由于我们没有使用相同的代码,我们应该按照自己的喜好进行操作。如果你和我合作的话,那么我们最好选择一个,而不是混合使用(可读性比两者都差),但尽管早在javascript出现之前(在其他语法类似的语言中,如C语言中),就已经有了关于这类问题的圣战,但两者都有各自的优点。

    我使用第二种(没有空格)大多数情况下,我都会使用样式,但有时如果有嵌套的括号,我会使用空格,尤其是嵌套的方括号,因为某些原因,我发现它比嵌套的曲线括号(括号)更难阅读.或者换一种说法,我会在任何给定的表达式开始时不加空格,但如果我觉得很难阅读,我会插入一些空格进行比较,如果它们有用的话,就把它们留在里面


    关于JS提示,我不会担心——这个特别的建议更多的是一个意见问题。你不太可能因为这个而引入bug。

    这是我个人的偏好,并说明了原因

    我将在接受的答案中讨论以下项目,但顺序相反

    注意一点不要挑剔阿尔尼塔克,这些评论对我们大家都很常见

    注意两个代码示例不是作为代码块编写的,因为语法突出显示只会阻止实际的空格问题

    我一直都是这样做的

    这不仅不是为编程实践辩护的好理由,也不是为任何反对改变的想法辩护的好理由

    JS文件下载大小很重要[尽管缩小当然可以解决这个问题]

    大小对于通过网络发送的任何文件总是很重要的,这就是为什么我们要缩小以删除不必要的空白。由于JS文件现在可以减少,关于生产代码中空白的争论是没有意义的

    没有实际价值或意义的;纯粹学术的。

    现在,我们进入这个问题的核心问题。以下观点仅是我的观点,我理解随后可能会进行辩论。我并不声称这种做法是正确的,只是说它目前对我来说是正确的。如果有足够的证据表明这是一个糟糕的选择,我愿意讨论这个观点的替代方案

    它完全可读,并且遵循Javascript祖先语言中的绝大多数格式约定

    该语句分为两个部分:“完全可读”;“并遵循Javascript祖先语言中的绝大多数格式约定”

    第二项可以忽略,因为我一直都是这样做的。

    因此,让我们只关注语句的第一部分,它非常可读,“

    首先,让我们做一些关于代码的陈述

  • 编程语言不是供计算机阅读的,而是供人类阅读的
  • 在英语中,我们从左到右,从上到下阅读
  • 遵循英语语法的既定实践将使更多使用英语编写代码的程序员更容易阅读代码
  • 注意:我只针对英语,但可能普遍适用于许多以拉丁语为基础的语言

    让我们通过完美地删除副词来减少第一个语句,因为它假设没有任何改进。让我们来处理剩下的:“它是可读的”。事实上,我们可以对它进行JS,并创建一个变量:“isReadable”作为布尔值

    问题

    该问题提供了两种选择:

    ( foo === bar )
    
    (foo === bar)
    
    如果没有任何上下文,我们可能会在英语语法方面出错,然后使用第二个选项,即删除空白。但是,在这两种情况下,“isReadable”很容易是真的

    让我们更进一步,删除所有空白

    (foo===bar)
    
    我们还能声称isReadable是真的吗?这就是布尔值不太适用的地方。让我们把isReadable移到一个Float,其中0不可读的<
    function isReadable(one, two, three){};
    
    function examineString(string){};
    
    examineString (isReadable (string));
    
    examineString(); // yes; examineString (): // no;
    
    input.$setViewValue(setToUpperLimit(inputValue));
    
    input.$setViewValue( setToUpperLimit( inputValue ));
    
    config.urls['pay-me-now'].initialize(filterSomeValues).then(magic);
    
    config.urls[ 'pay-me-now' ].initialize( fitlerSomeValues ).then( magic );
    
    var hello='someting';
    
    if(type===undefined){};
    
    var string="I"+"can\'t"+"read"+"this";
    
    function hello( one, two, three ){
    
    return one;
    
    }
    
    hello( one );
    
    hello({ key: value, thing1: thing2 });
    
    var array = [ 1, 2, 3, 4 ];
    
    array.slice( 0, 1 );
    
    chain[ 'things' ].together( andKeepThemReadable, withPunctuation, andWhitespace ).but( notTooMuch );
    
    this.someMethod(toString(value),max(value1,value2),myStream(fileName));
    
    this.someMethod( toString( value ), max( value1, value2 ), myStream( fileName ) );