읽기 좋은 코드를 위한 간단한 원칙
(참조: https://wergia.tistory.com/124)
코드 블록 중괄호 스타일
코드 블록 중괄호를 쓰는 스타일은 크게 2가지로 나눌 수 있다
1) 조건문이나 반복문의 아래로 { } 를 모두 내리는 스타일
// 조건문
if()
{
code_block;
}
else
{
code_block;
}
// 반복문
for()
{
code_block;
}
while()
{
code_block;
}
2) 조건문이나 반복문 옆으로 { } 를 붙이는 스타일
// 조건문
if() {
code_block;
}
else {
code_block;
}
// 반복문
for() {
code_block;
}
while() {
code_block;
}
이 두가지 스타일은 모두 사용가능한 스타일이다.
각자만의 장단점이 있으며(1번 스타일은 중괄호의 시작-끝을 분명히 알 수 있음 / 2번 스타일은 라인을 한 줄이라도 더 절약할 수 있음), 개발자 개인의 취향에 따라 선택이 가능한 부분이다.
다만 피해야 할 나쁜 경우 한 가지는 '두 가지 방식을 섞어서 쓰는 것' 이다.
: 두 가지 방식을 섞어서 쓰면 개발자가 '코드블록의 시작점/끝점'을 놓치거나 착각하는 경우가 발생하기 쉬울 것이며, 이는 조건문/반복문 내부에다가 코드를 넣으려다가 밖에다가 넣게 되거나 그 반대의 경우도 마찬가지로 발생할 수 있다. 이게 반복되면 결국 개발 전체 생산성의 저하로 이어지게 된다.
⇒ 따라서 중괄호 전부 내리기 든 중괄호 옆에 붙이기든 둘 중 한 방식으로만 일관되게 코드를 작성해야 한다.
조건문 내부 코드가 한 줄일 때 중괄호 스타일
컴파일러는 조건문(if문) 이 내부가 한 줄일 경우 중괄호를 생략하는 것을 허용한다.
때문에 조건문의 코드블록이 한 줄일 경우엔 중괄호 없이 쓰거나 하는 경우도 있다.
if(age==7) System.out.println("He is 7 years old..!"); // 중괄호 없이 한줄로 쓰기
혹은
if(age==7)
System.out.println("He is 7 years old..!"); // 중괄호 없이 줄바꿈
이 때 '중괄호 없이 줄바꿈' 식의 스타일은 반드시 지양하는 것이 좋다.
여타 다른 스타일들은 상황에 따라, 팀의 규칙이나 정해진 스타일에 따라 어느 것도 사용해도 무방하지만, 이 '중괄호 없이 줄바꿈' 식의 스타일은 사용하는 것을 피해야할 'Risky한 방식' 이다.
'조건문에서 중괄호 없이 줄바꿈' 방식이 risk가 있는 이유
조건문의 코드블록에 코드 추가가 필요해 2줄 이상이 되게 되면 결국 중괄호를 다시 추가해야 함
중괄호를 추가하는 순간 라인을 이리저리 재정렬해야 하는 번거로움이 발생
아주 기초적인 실수지만 조건문 블록 안에 들어가야 할 코드를 블록 밖으로 빼버리게 되는 실수가 발생 가능성 존재
⇒ 이러한 이유로, "코드 작성속도가 좀더 빠르다 / 중괄호가 차지하는 라인을 절약한다" 등의 자그마한 이점을 위해 조건문에서 중괄호를 생략하는 것은 (장기적으로) 득보다 실이 더 많을 수 있는 방법이다.
그러므로 조건문에서는 (코드블록이 지금 당장은 한 줄 이더라도) 중괄호를 생략하지 않고 모두 포함해서 코드를 작성해주는 것이 바람직하다.