본문 바로가기
Old Posts/Java

[Java] 깔끔한 조건문(if) 작성법 - Bubble Style vs Gateway Style

by A6K 2021. 7. 1.

자바 프로그래밍을 하다보면 코드가 더러워지는 경우들이 있다. 특히 조건문들이 붙으면서 코드가 지저분해지고 가독성이 떨어지게 되는 경우가 많다. 조건문을 조금만 다른 관점으로 접근하면 가독성이 훼손되지 않으면서 동일한 로직을 좀 더 깔금하게 구현할 수 있다.

Bubble Style

우선 코드의 로직을 보강하면서 조건문을 붙여나갈 때 제일 많이 등장하는 패턴의 코드는 다음과 같을 것이다.

if (condition1) { 
    if (condition2) { 
        if (condition3) { 
            return "All condition is true"; 
        } 
        return "Condition3 is false"; 
    }
    return "Condition2 is false"; 
}
return "Condition1 is false";

의식의 흐름대로 따라가면서 코드를 작성하다보면 if 문이 중첩되는 이런 형태의 코드가 만들어 질 것이다. 겹겹이 둘러쌓인 조건문들의 형상이 마치 방울방울 뭉쳐있다고해서 'Buuble Style'의 코드라고 한다.

이런 형태의 코드는 여러 조건문들이 겹쳐있어서 로직이 한눈에 잘 들어오지 않는다.

Gateway Style

위 코드와 같은 동작을 하는 로직을 Gateway 스타일로 변경할 수 있다.

if (!condition1) { 
  return "Condition1 is false"; 
} 

if (!condition2) { 
  return "Condition2 is false"; 
} 

if (!condition3) { 
  return "Condition3 is false";
} 

return "All condition is true";

Bubble 스타일의 코드가 대부분 값의 유무 확인과 null 값 체크, 필수값 체크 등으로 구성되어 있다. 이런 경우 조건을 반대로 생각해서 조건이 만족되지 않으면 통과시키지 않는 스타일로 변경할 수 있다. 마치 문지기가 다음 로직으로 통과시키지 않는 것처럼 코드를 작성했다고해서 '게이트웨이(Gateway)' 스타일이라고 부른다.

코드에서 들여쓰기, 인덴트의 깊이는 최대한 줄이는게 좋다. 버블 스타일로 작성되어 있는 코드는 인덴트가 많아서 가독성이 떨어지는데 게이트웨이 스타일로 변경할 수 있는지 고민해봐야한다.

댓글