新的线上的JavaScript括号?

在工作中,我们把括号放在下一行,但是在家里,我做的是相反的。 你更倾向哪个? (K&R vs OTBS)

function something() { // ... } function something() { // ... } 

很多JavaScript库似乎都使用OTBS(一种真正的支撑风格)。 我想跟随他们的其他JavaScript项目的一致性,但不K&R的风格看起来更可读?

注意:我们知道在JavaScript中返回和括号的问题,这将永远是一个例外。 但是,这只是一个例子。

这是一场圣战,你将永远得不到一个有用的答案! 只要坚持任何其他人在项目中使用,不要争辩!

为了什么是值得的,我是K&Rite。 我发现OTBS在开放结构和下面的陈述之间提供了很多视觉空间,当这两条线经常是强相关的,所以能够更好地一起呈现,没有介入几乎空白的线。 我喜欢保留我的空行保留用于分隔相关的语句块。

无论如何,在一个很多空白的编码风格,这可能是相对不重要的。 但是我个人很珍惜,所以我可以在屏幕上保存更多的程序。

我不会买在左边不同列上的开放大括号是一个问题。 从缩进中看到块形状仍然很容易。 除非你使用垂直缩进。 不要这样做。 但这完全是另一场圣战。

道格拉斯·克罗克福德给出了selectK&R风格的理由1

我总是使用K&R风格,把{放在行尾,而不是前面,因为它避免了JavaScript return语句中可怕的devise错误。

他提到的错误是JavaScript在以下两种情况下如何处理return语句:

 return { 'status': 'ok' }; 

…和:

 return { 'status': 'ok' }; 

第一个将返回一个status属性的对象,而后者将返回undefined因为分号插入 。


1 Douglas Crockford:JavaScript:好的部分:风格(第96页) – ISBN:978-0596517748。

我遵循道格拉斯·克罗克福德的JavaScript编码惯例,这个惯例是受Sun的Java风格指南的启发。

这里有一个链接: http : //javascript.crockford.com/code.html

在我看来,这取决于还有谁会使用你的代码。 如果你在一个C#团队工作,分担很多责任,把它放在一个新的路线,避免不可避免的争吵,否则将遵循。 如果你使用了大量的PHP(或者老版本的JS程序员),就把它放在第一行,原因完全一样。

但是如果你正在寻找更权威的东西,道格拉斯·克罗克福德(Douglas Crockford)说,开放式支架应该始终处于顶端 。 如果我没有记错的话,他的推理就是使它与其他语言保持一致。 基本上,因为这是有效的,但可能是不正确的代码:

 function myFunc() { return { ok: true }; } 

…你应该普遍避免把开放大括号放在一个新的线上。 为什么? 因为编程风格不应该导致句法歧义。

上面的示例代码是有效的,因为它在语法上是完全正确的,如果您写这个代码,则不会引发exception。 但是,不是返回一个对象字面值{ok:true} ,而是返回undefined ,下面的代码将不会被触发。 把开放的大括号放在一行,它会返回对象字面你可能会期待。

问题是,你觉得这个论据足够引人注目吗?

没有一个比另一个好。 只要select一个,并一致使用它。

都是主观的。 有些稍好,但差别可以忽略不计。 要做的最重要的事情就是保持所有代码的一致性。

就个人而言,我更喜欢隐藏在风格,4空间“真正”的标签。

 函数a(){
    如果(b){
        做;
     } else {
         DO2;
     }
 } 

我更喜欢他们在同一行,但主要是因为我传递匿名函数很多…它节省了一些空间,使得函数定义看起来不那么震撼。 当然,这只是一个意见,我同意Bytecode忍者一致性是最重要的事情。

正如很多答案中所述,最重要的是,你发现你(和/或你的团队,如果适用的话)坚持的风格。 就我个人而言,我更喜欢相同的行,因为我发现如果你正在使用闭包和嵌套函数,那么在新行上放置大括号会导致大量近乎空白的行,这使得代码对我来说不太可读(尽pipe可能不适合大多数人…)

出于上面列出的相同原因,我更喜欢K&R方法。 它看起来更紧凑,两条相关的线条组合在一起。