space-before-blocks
一貫性は、あらゆるスタイルガイドにおいて重要な要素です。ブロックの先頭に中括弧を置く位置は個人の好みですが、プロジェクト全体で一貫性を保つ必要があります。スタイルが不統一だと、コードの重要な部分が見づらくなります。
ルール詳細
このルールは、ブロックの前にスペースを置くかどうかの一貫性を強制します。これは、新しい行で始まらないブロックのみに適用されます。
- このルールは、
=>
とブロックの間に存在するスペースを無視します。スペースはarrow-spacing
ルールによって処理されます。 - このルールは、キーワードとブロックの間に存在するスペースを無視します。スペースは
keyword-spacing
ルールによって処理されます。 - このルールは、switch caseの
:
とブロックの間に存在するスペースを無視します。スペースはswitch-colon-spacing
ルールによって処理されます。
オプション
このルールは1つの引数を取ります。引数が"always"
の場合、ブロックの前に少なくとも1つのスペースが必要です。"never"
の場合、すべてのブロックの前にスペースがあってはいけません。関数ブロック、キーワードブロック、クラスで異なるスペースが必要な場合は、ルールの引数としてオプションの構成オブジェクトを渡して、各ケースを個別に設定できます。構成オブジェクトの値が"off"
の場合、その種類のブロックについてはどちらのスタイルも適用されません。
(例: { "functions": "never", "keywords": "always", "classes": "always" }
)
デフォルトは"always"
です。
"always"
"always"オプションを使用した際の、**不正な**コードの例
/*eslint @stylistic/js/space-before-blocks: "error"*/
if (a){
b();
}
function a(){}
for (;;){
b();
}
try {} catch(a){}
class Foo{
constructor(){}
}
"always"
オプションを使用した際の、**正しい**コードの例
/*eslint @stylistic/js/space-before-blocks: "error"*/
if (a) {
b();
}
if (a) {
b();
} else{ /*no error. this is checked by `keyword-spacing` rule.*/
c();
}
class C {
static{} /*no error. this is checked by `keyword-spacing` rule.*/
}
function a() {}
for (;;) {
b();
}
try {} catch(a) {}
"never"
"never"
オプションを使用した際の、**不正な**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", "never"]*/
if (a) {
b();
}
function a() {}
for (;;) {
b();
}
try {} catch(a) {}
"never"
オプションを使用した際の、**正しい**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", "never"]*/
if (a){
b();
}
function a(){}
for (;;){
b();
}
try{} catch(a){}
class Foo{
constructor(){}
}
{ "functions": "never", "keywords": "always", "classes": "never" }
と設定した場合の、**不正な**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
/*eslint-env es6*/
function a() {}
try {} catch(a){}
class Foo{
constructor() {}
}
{ "functions": "never", "keywords": "always", "classes": "never" }
と設定した場合の、**正しい**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
/*eslint-env es6*/
for (;;) {
// ...
}
describe(function(){
// ...
});
class Foo{
constructor(){}
}
{ "functions": "always", "keywords": "never", "classes": "never" }
と設定した場合の、**不正な**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
/*eslint-env es6*/
function a(){}
try {} catch(a) {}
class Foo {
constructor(){}
}
{ "functions": "always", "keywords": "never", "classes": "never" }
と設定した場合の、**正しい**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
/*eslint-env es6*/
if (a){
b();
}
var a = function() {}
class Foo{
constructor() {}
}
{ "functions": "never", "keywords": "never", "classes": "always" }
と設定した場合の、**不正な**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
/*eslint-env es6*/
class Foo{
constructor(){}
}
{ "functions": "never", "keywords": "never", "classes": "always" }
と設定した場合の、**正しい**コードの例
/*eslint @stylistic/js/space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
/*eslint-env es6*/
class Foo {
constructor(){}
}
使用しない場合
ブロックの前にスペースを置くことの一貫性を気にしない場合は、このルールをオフにすることができます。