brace-style
ブレーススタイルは、プログラミングにおけるインデントスタイルと密接に関連しており、制御文と本体に対するブレースの配置を記述します。世の中には、おそらく12個、あるいはそれ以上のブレーススタイルが存在します。
one true brace style は、JavaScriptで最も一般的なブレーススタイルの1つであり、ブロックの開始ブレースを対応する文または宣言と同じ行に配置します。例:
if (foo) {
bar();
} else {
baz();
}
one true brace styleの一般的なバリアントの1つはStroustrupと呼ばれ、`if-else`構文の`else`文、および`catch`と`finally`は、先行する閉じブレースの後の独自の行に配置する必要があります。例:
if (foo) {
bar();
}
else {
baz();
}
別のスタイルはAllmanと呼ばれ、すべてのブレースは追加のインデントなしで独自の行に配置される必要があります。例:
if (foo)
{
bar();
}
else
{
baz();
}
どのスタイルが他のスタイルよりも優れていると見なされるわけではありませんが、ほとんどの開発者は、プロジェクト全体で一貫したスタイルを維持することが、長期的な保守性にとって重要であることに同意しています。
ルールの詳細
このルールは、ブロックに対して一貫したブレーススタイルを強制します。
オプション
このルールには文字列オプションがあります。
- ` "1tbs"`(デフォルト)は、one true brace styleを強制します。
- `"stroustrup"`は、Stroustrupスタイルを強制します。
- `"allman"`は、Allmanスタイルを強制します。
このルールには、例外のためのオブジェクトオプションがあります。
- `"allowSingleLine": true`(デフォルトは`false`)は、ブロックの開始ブレースと終了ブレースを*同じ*行に配置することを許可します。
1tbs
デフォルトの`"1tbs"`オプションを使用したこのルールの**誤った**コードの例:
/*eslint @stylistic/brace-style: "error"*/
function foo()
{
return true;
}
if (foo)
{
bar();
}
try
{
somethingRisky();
} catch(e)
{
handleError();
}
if (foo) {
bar();
}
else {
baz();
}
class C
{
static
{
foo();
}
}
デフォルトの`"1tbs"`オプションを使用したこのルールの**正しい**コードの例:
/*eslint @stylistic/brace-style: "error"*/
function foo() {
return true;
}
if (foo) {
bar();
}
if (foo) {
bar();
} else {
baz();
}
try {
somethingRisky();
} catch(e) {
handleError();
}
class C {
static {
foo();
}
}
// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();
`"1tbs", { "allowSingleLine": true }`オプションを使用したこのルールの**正しい**コードの例:
/*eslint @stylistic/brace-style: ["error", "1tbs", { "allowSingleLine": true }]*/
function nop() { return; }
if (foo) { bar(); }
if (foo) { bar(); } else { baz(); }
try { somethingRisky(); } catch(e) { handleError(); }
if (foo) { baz(); } else {
boom();
}
if (foo) { baz(); } else if (bar) {
boom();
}
if (foo) { baz(); } else
if (bar) {
boom();
}
if (foo) { baz(); } else if (bar) {
boom();
}
try { somethingRisky(); } catch(e) {
handleError();
}
class C {
static { foo(); }
}
class D { static { foo(); } }
stroustrup
`"stroustrup"`オプションを使用したこのルールの**誤った**コードの例:
/*eslint @stylistic/brace-style: ["error", "stroustrup"]*/
function foo()
{
return true;
}
if (foo)
{
bar();
}
try
{
somethingRisky();
} catch(e)
{
handleError();
}
class C
{
static
{
foo();
}
}
if (foo) {
bar();
} else {
baz();
}
`"stroustrup"`オプションを使用したこのルールの**正しい**コードの例:
/*eslint @stylistic/brace-style: ["error", "stroustrup"]*/
function foo() {
return true;
}
if (foo) {
bar();
}
if (foo) {
bar();
}
else {
baz();
}
try {
somethingRisky();
}
catch(e) {
handleError();
}
class C {
static {
foo();
}
}
// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();
`"stroustrup", { "allowSingleLine": true }`オプションを使用したこのルールの**正しい**コードの例:
/*eslint @stylistic/brace-style: ["error", "stroustrup", { "allowSingleLine": true }]*/
function nop() { return; }
if (foo) { bar(); }
if (foo) { bar(); }
else { baz(); }
try { somethingRisky(); }
catch(e) { handleError(); }
class C {
static { foo(); }
}
class D { static { foo(); } }
allman
`"allman"`オプションを使用したこのルールの**誤った**コードの例:
/*eslint @stylistic/brace-style: ["error", "allman"]*/
function foo() {
return true;
}
if (foo)
{
bar(); }
try
{
somethingRisky();
} catch(e)
{
handleError();
}
class C {
static {
foo();
}
}
if (foo) {
bar();
} else {
baz();
}
`"allman"`オプションを使用したこのルールの**正しい**コードの例:
/*eslint @stylistic/brace-style: ["error", "allman"]*/
function foo()
{
return true;
}
if (foo)
{
bar();
}
if (foo)
{
bar();
}
else
{
baz();
}
try
{
somethingRisky();
}
catch(e)
{
handleError();
}
class C
{
static
{
foo();
}
}
// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();
`"allman", { "allowSingleLine": true }`オプションを使用したこのルールの**正しい**コードの例:
/*eslint @stylistic/brace-style: ["error", "allman", { "allowSingleLine": true }]*/
function nop() { return; }
if (foo) { bar(); }
if (foo) { bar(); }
else { baz(); }
try { somethingRisky(); }
catch(e) { handleError(); }
class C
{
static { foo(); }
static
{ foo(); }
}
class D { static { foo(); } }
使用しない場合
特定のブレーススタイルを強制したくない場合は、このルールを有効にしないでください。