在《深入浅出Nodejs》一书的附录中,var与逗号的编码规范问题的若干疑问

在《深入浅出Nodejs》一书的附录中,var与逗号的编码规范问题的若干疑问

在《深入浅出node.js》一书的附录中,作者介绍了var和逗号的使用规范。

其中C.2.1.2 变量声明中,说到每行生命都应该带上一个var,而不是只有一个var。 但是在C.2.1.6 逗号中,却遇到了这样的正确示例: var foo = 'hello' , bar = 'world'; 还有这里的“如果逗号不在行结尾,前面需要一个空格”,应该是后面需要一个空格吧?

关于var,Ghost似乎没有遵循这个规定:https://github.com/TryGhost/Ghost/blob/master/core/server/index.js


11 回复

在《深入浅出Node.js》一书的附录中,作者确实提到了关于var声明和逗号的一些编码规范。这些规范有助于提高代码的可读性和一致性。然而,在实际应用中,不同的项目可能会有不同的编码风格。下面我们将详细讨论这些问题,并提供一些示例代码来帮助理解。

关于var声明

书中提到,每行声明都应该带上一个var关键字,而不是在一个var后面列出多个变量。这主要是为了提高代码的可读性。例如:

// 不推荐的方式
var a = 1, b = 2, c = 3;

// 推荐的方式
var a = 1;
var b = 2;
var c = 3;

这样做可以避免在一个很长的var声明中出现混淆,使得每个变量的声明更加清晰。

关于逗号

书中提到,如果逗号不在行尾,则逗号前应有一个空格。这个规则是为了保持一致性和可读性。例如:

// 正确的写法
var foo = 'hello', bar = 'world';

// 错误的写法(逗号前没有空格)
var foo = 'hello',bar = 'world';

这里需要注意的是,逗号前需要一个空格,而不是逗号后。这样可以使代码更易于阅读和维护。

Ghost项目中的实际情况

你提到的Ghost项目中并没有严格遵循上述规则。这可能是因为不同的项目团队有不同的编码规范和偏好。例如,在Ghost项目的index.js文件中,我们可以看到以下代码片段:

var config = require('./config'), 
    db = require('./db'),
    log = require('./logging');

在这个例子中,var后面列出了多个变量,而没有为每个变量单独声明。这种写法虽然违反了书中的建议,但在实际开发中也是常见的做法,尤其是在处理简单的变量声明时。

总结

虽然《深入浅出Node.js》一书提供了关于var声明和逗号的一些编码规范,但这些规范并不是强制性的。不同的项目和团队可能会根据自己的需求和偏好选择不同的编码风格。重要的是保持代码的一致性和可读性,无论采用哪种编码规范。


代码规范和代码风格,都只能说约定,每个人都有各自的习惯,没有绝对的对与错之分,看别人的代码规范,需要了解为什么这样写会更好。

每一行声明都带一个 var 有两个优点:

  1. 删除一个变量声明都很容易(直接删除行)
  2. 查看 diff 的时候不会互相影响

如果 ghost 觉得不需要这两点而选择打字更少的一个 var 的风格,只是仁者见仁,智者见智的问题。

John Resig… Nicholas C.Zakas… …等都说过 一个var就ok.

似乎多个var 降低效率? 没试过

再说了 你见过某某某的一堆js里 , 没有var x, xxx, xxxxxx?
个人不同意piao灵的这个见解

我个人的习惯是每一个变量声明都有一个var

写少一个var多用,就能显示技术有多牛逼?

+1 代码风格从来都是见仁见智的。

为什么每次都是 piao灵…

这个见仁见智的问题,不过在实际的团队开发中,感觉确实一行一个var会稍微舒服点。。。

在《深入浅出Node.js》一书的附录中,确实讨论了关于var声明和逗号的编码规范。具体来说:

var声明规范

书中提到,每行变量声明都应带有一个var关键字,而不是只在一个地方使用var来声明多个变量。例如,正确的写法应该是:

var a = 1;
var b = 2;

而错误的写法是:

var a = 1, b = 2;  // 不推荐

逗号使用规范

书中提到,当逗号不在行尾时,前面需要加一个空格。例如:

var a = 1, b = 2;  // 正确

如果逗号在行尾,则可以省略前面的空格:

var a = 1,
    b = 2;  // 正确

示例代码

假设我们要声明两个变量并赋值,可以按以下方式编写:

var foo = 'hello',
    bar = 'world';

在这个例子中,我们使用了逗号分隔符,并且每个变量声明都用了一个var

Ghost项目中的实践

你提到的Ghost项目的代码示例中,index.js文件中的变量声明并没有严格遵循上述规则。这可能是因为不同的项目有不同的编码规范或风格指南。实际项目中可能会根据团队的习惯进行调整,但这并不意味着书籍中的建议是错误的。

总结

书籍中的建议是为了提高代码可读性和一致性。实际项目中可能会有一些差异,但理解这些规范有助于编写更清晰、一致的代码。

回到顶部