这是我个人的偏好以及原因。
我将在已接受的答案中讨论以下项目,但顺序相反。
note-one不是针对 Alnitak,这些评论对我们所有人来说都很常见......
note-two代码示例不写为代码块,因为语法突出显示仅阻止空白的实际问题。
我一直都是这样做的。
这不仅不是为编程实践辩护的好理由,而且也不是为编程实践辩护的好理由ANY反对改变的想法。
JS 文件下载大小很重要[尽管缩小当然可以解决这个问题]
尺寸永远很重要Any要通过网络发送的文件,这就是我们进行缩小以删除不必要的空格的原因。由于现在可以减少 JS 文件,因此关于生产代码中的空格的争论是moot.
moot:几乎没有或没有实用价值或意义;纯粹学术性的。没有实际意义的定义 http://dictionary.reference.com/browse/moot
现在我们进入这个问题的核心问题。以下想法仅是我的,我知道可能会引发争论。我并不宣称这种做法是正确的,只是说它目前对我来说是正确的。如果这个想法被充分证明是一个糟糕的选择,我愿意讨论这个想法的替代方案。
它具有完美的可读性,并且遵循 Javascript 祖先语言中的绝大多数格式约定
该声明分为两部分:“它完全可读”; “并遵循 Javascript 祖先语言中的绝大多数格式约定”
由于同样的想法,第二项可以被驳回我一直都是这样做的。
所以我们只关注声明的第一部分它完全可读,”
首先,让我们对代码做一些说明。
- 编程语言不是供计算机阅读的,而是供人类阅读的。
- 在英语中,我们从左到右、从上到下阅读。
- 遵循英语语法的既定实践将使更多使用英语编写代码的程序员更容易阅读代码。
NOTE:我仅针对英语建立我的案例,但可能普遍适用于许多基于拉丁语的语言。
让我们通过删除副词来减少第一个语句完美因为它假设不可能有任何改进。让我们继续处理剩下的事情:“它是可读的”。事实上,我们可以全力以赴JS并创建一个变量:“isReadable”作为布尔值。
问题
该问题提供了两种选择:
( foo === bar )
(foo === bar)
如果缺乏任何上下文,我们可能会在英语语法方面犯错,并选择第二个选项,即删除空格。然而,在这两种情况下,“isReadable”很容易被true.
因此,让我们更进一步并删除所有空白......
(foo===bar)
我们还能主张吗可读是真实的?这是布尔值可能不那么普遍适用的地方。让我们将 isReadable 移至 Float,其中0 is 不可读 and 1 is 完全可读.
在前面的三个例子中,我们可以假设我们会从我们询问的每个人那里得到每个单独例子的 0 - 1 范围内的值的集合:“在 0 - 1 的范围内,您如何评价可读性这段文字?”
现在让我们向示例添加一些 JS 上下文...
if ( foo === bar ) { } ;
if(foo === bar){};
if(foo===bar){};
我们的问题又来了:“按照 0 - 1 的标准,您如何评价本文的可读性?”
我在这里假设空白有一个平衡:空白太少,isReadable 接近 0;空白太多,isReadable 接近 0。
例如:“你好吗?”和“你好吗?”
如果我们在许多 JS 示例之后继续问这个问题,我们可能会发现可接受的空白的平均限制,这可能接近英语中的语法规则。
但首先,让我们看看 JS 中括号的另一个例子:函数!
function isReadable(one, two, three){};
function examineString(string){};
这两个函数示例遵循当前标准,即 () 之间没有空格(逗号后面除外)。下面的下一个参数并不关心在声明函数时如何使用空格(如上面的示例),而是关心代码可读性的最重要部分:代码在哪里被调用!
针对下面的每个示例提出这个问题......
“按照 0 - 1 的标准,您如何评价本文的可读性?”
examineString(isReadable(string));
examineString( isReadable( string ));
第二个例子使用了我自己的规则
- 单词之间括号之间可以有空格,但标点符号之间不能有空格。
即不是这样的
examineString( isReadable( string ) ) ;
但就像这样examineString( isReadable( string ));
或这个examineString( isReadable({ string: string, thing: thing });
如果我们要使用英语语法规则,那么我们将在“(”之前留出空格,我们的代码将是......
examineString (isReadable (string));
我不赞成这种做法,因为它将函数调用与它应该属于的函数分开。
examineString(); // yes; examineString (): // no;
由于我们没有完全反映正确的英语语法,但英语语法确实说需要休息,那么也许在括号之间添加空格可能会让我们更接近1与 isReadable?
我将其留给大家,但请记住基本问题:
“这一变化是否会使其更具可读性,还是会降低可读性?”
这里还有一些支持我的案例的例子。
假设函数和变量已经声明...
input.$setViewValue(setToUpperLimit(inputValue));
这是我们写一个正确的英语句子的方式吗?
input.$setViewValue( setToUpperLimit( inputValue ));
更接近1?
config.urls['pay-me-now'].initialize(filterSomeValues).then(magic);
or
config.urls[ 'pay-me-now' ].initialize( fitlerSomeValues ).then( magic );
(空格就像我们对运算符所做的那样)
您能想象运算符周围没有空格吗?
var hello='someting';
if(type===undefined){};
var string="I"+"can\'t"+"read"+"this";
我做什么...
我之间的空间()
, {}
, and []
;如以下示例所示
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 );