Back-End/Node
Node 프로그래밍 시 유의사항 ver.14 블록 (Blocks) & 제어문 (Control Statements)
Yuni-Q
2018. 9. 24. 12:04
// 출처 https://github.com/ParkSB/javascript-style-guide#%EB%AA%A9%EC%B0%A8
// 블록 (Blocks) & 제어문 (Control Statements)
// 1 여러 줄의 블록에는 중괄호를 사용하세요. eslint: nonblock-statement-body-position
// good
if (test) return false;
// good
if (test) {
return false;
}
// good
function bar() {
return false;
}
// 2 여러 줄의 if와 else문을 사용할 때는 else를 if 블록의 닫는 중괄호와 같은 줄에 두세요.
eslint: brace-style
// good
if (test) {
thing1();
thing2();
} else {
thing3();
}
// 3 만약 if 블록이 항상 return 구문을 실행시킨다면, else 블록은 불필요합니다.
return을 포함한 if블록을 잇는 else if 블록 안에 return 구문이 있으면
여러 if 블록으로 나눠질 수 있습니다. eslint: no-else-return
// bad
function foo() {
if (x) {
return x;
} else {
return y;
}
}
// bad
function cats() {
if (x) {
return x;
} else if (y) {
return y;
}
}
// bad
function dogs() {
if (x) {
return x;
} else {
if (y) {
return y;
}
}
}
// good
function foo() {
if (x) {
return x;
}
return y;
}
// good
function cats() {
if (x) {
return x;
}
if (y) {
return y;
}
}
// good
function dogs(x) {
if (x) {
if (z) {
return y;
}
} else {
return z;
}
}
// 4 제어문 (if, while 등)이 너무 길거나 최대 길이를 넘긴 경우,
각 조건을 새로운 줄에 두세요. 논리 연산자는 줄의 시작부분에 있어야 합니다.
// bad
if ((foo === 123 || bar === 'abc') && doesItLookGoodWhenItBecomesThatLong() && isThisReallyHappening()) {
thing1();
}
// bad
if (foo === 123 &&
bar === 'abc') {
thing1();
}
// bad
if (foo === 123
&& bar === 'abc') {
thing1();
}
// bad
if (
foo === 123 &&
bar === 'abc'
) {
thing1();
}
// good
if (
foo === 123
&& bar === 'abc'
) {
thing1();
}
// good
if (
(foo === 123 || bar === 'abc')
&& doesItLookGoodWhenItBecomesThatLong()
&& isThisReallyHappening()
) {
thing1();
}
// good
if (foo === 123 && bar === 'abc') {
thing1();
}
// 5 선택 연산자를 제어 구문 대신 쓰지 마세요.
// bad
!isRunning && startRunning();
// good
if (!isRunning) {
startRunning();
}