4

我理解“分号隐式插入”,但我不确定它是否发生在函数表达式的情况下。

例如,这两个表达式总是会平等地解释:

Matrix.scale = function (mat, scaleX, scaleY, dest) {
// useful code
};

Matrix.scale = function (mat, scaleX, scaleY, dest)
{
// useful code
};

我喜欢第一个,我也注意到 Google 也喜欢它:http: //google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml ?showone=Code_formatting#Code_formatting 。但我的同事不喜欢这种风格。问题出现了是否严格遵守这条规则,即使有函数声明,或者它是对统一性的贡献,并且这段代码在经过巧妙的缩小后不会中断?

4

5 回答 5

9

在其他语言中,这可能是一个品味问题,但在 JS 中,很难找到错误的来源。考虑以下代码片段,它可能不会像第一眼所期望的那样:

function foo()
{
  return
  {
    bar: 1
  };    
};

console.log(foo()); // => undefined

进一步阅读:http ://en.wikipedia.org/wiki/JavaScript_syntax (搜索“分号插入”)

于 2012-08-13T20:53:30.543 回答
1

代码风格只是关于如何格式化代码和命名变量的协议:

  • 使用这种语言进行编码、开发特定库等的人的(子)社区。
  • 你的公司。

很难说这两个因素中哪一个更具有决定性,但如果说优秀公司的代码风格与“野外”的代码风格密切相关,这并不是一个大胆的说法。部分原因是因为在优秀的公司中,代码通常是为开源贡献的,因此最好不要重新发明它。

有些语言非常坚定、彻底,并被绝大多数风格指南所认可。例如,this_is_very_uncommon_to_java

至于javascript,情况并非如此。没有像抽象的、通用的“javascript 代码风格”这样的东西。大括号的问题仍然是 javascript 社区中大量讨论的话题,分号也是如此。我想,这只是因为 js-developing 的任何其他问题都已经解决了;)

如果您需要建议(看起来您想要),请与您的同事和平相处。达成任何协议并遵守。这是最重要的 - 团队中的良好关系会超过任何代码样式协议。

于 2012-08-13T20:58:07.307 回答
1

根据书Code Complete,括号应该放在第一行(称为控制语句),因为放在第二行会产生误导,因为它不显示代码的逻辑结构。如果从图形的角度来看,第二种方法如下所示:

在此处输入图像描述

其中线 AE 代表以下内容,这与此问题中声明的第二种方法类似。

A function foo ()
B {
C     print "Hello";
D     print "World";
E }

您可以看到具有误导性,因为您无法判断 B 行是否从属于 A 行,或者 B 行是否是其自己的单独语句

编辑:如果图像太抽象,这里快速解释为什么大括号通常与控制语句一起包含在第一行

函数有两个主要元素:

  1. 控制结构
  2. 函数的语句

通过将大括号放在第二行(图像中的 B 行),它既不在控制语句中,也不是函数语句的一部分。

编辑 2

IMO,每一行代码都应该有一个目的是节省垂直空间,以便在我的屏幕上一次查看更多行并保留代码的逻辑含义。因此,当大括号与函数声明在同一行时,它就与它打开的语句相关联。但是,当它单独位于一行时(在我的示例中为 B 行)并且它没有缩进以显示从属于函数声明,那么它会破坏代码的逻辑含义,因为它既不与控制结构相关联也不是函数语句。因此,通过将大括号与函数声明放在同一行,那么每一行代码都有一个用途,它包含代码的逻辑含义,并且它节省了我的屏幕空间。

function foo() { // brace is on the same line and it's associated with the statement that it opens
    print "Hello"; // this line does something
    print "World"; // this line does something
} // this last brace terminates the function which is part of the control construct
于 2012-08-13T21:04:35.437 回答
0

这是100%的口味问题。无论您喜欢什么,我都同意最好保持一致。因此,如果你是一个项目的新手,你真的应该遵循既定的风格指南。

于 2012-08-13T20:46:45.533 回答
0

如果您不为 Google 工作,则无需遵守该规则。它不会破坏任何东西。就我个人而言,我喜欢后一个版本,它多了一条线。

于 2012-08-13T20:50:21.710 回答