" 왜? "
라는 질문에 답변을 해보자면
"가독성" 을 위해서
위에선 단지
가독성이라고 답했지만
if문이 많아지면 효율성도 떨어지고
유지보수나 기능 확장 측면에서 적절하지 않다
enum을 사용하거나,
map으로 대체하는 등
다양한 방법이 많지만,
일단은 조건문에 초점을 잡아보자
먼저 가장 기본적인 수준의
if문부터 살펴보자
"Bubble Style"
보통 이런 식의
if else 조건문을
많이 사용하게 된다
겹겹이 둘러싸인
조건문들의 형상이
마치 방울방울 뭉쳐있다고 해서
"Bubble Style"
이라는 이름이 붙여졌다
코드를 살펴보면,
현재 여러 조건문이
겹쳐있어서
if와 else의 범위가
한눈에 잘 들어오지 않는다
그렇다면
대표적인 차선책으로
어떤 스타일이 존재할까?
"GateWay Style"
조건을 반대로 생각해서
애초에 조건이 만족되지 않으면
통과시키지 않는 문지기 형태의
"Gateway Style"
이라는 스타일 기법 존재한다
if문을 작성할 때,
가장 주의해야 할 부분은
바로 해당 조건문의 깊이이다
앞서
Bubble Style로 작성했던
코드를 Gateway Style을 사용하여
단 5줄로 요약해 버렸다
가능하다면,
최대한 깊이가 1인 분기문을
작성하는 것을 권고한다
Guard Clause
방식을 도입했고,
if문 내부 조건이 간단하기에
괄호를 삭제하고 return문 까지
단 한줄로 마무리했다
스타일을 살펴보았으니,
리펙토링 측면에서
간단한 기법들을 살펴보자
#1 boolean 타입을 true / false로 직접 반환하지 말자!
조건절 자체가
boolean 반환 값을 가질 때는
if / else 문을 사용하는 것 보다
직접 반환하는 것이
훨씬 깔끔하다
#2 삼항 연산자를 적극 활용하자!
조건에 따른
return 값을 각각 가진다면,
삼항 연산자를 쓰는 것이
더욱 간결하다
참조: https://wpshout.com/unconditionally-refactoring-nested-statements-cleaner-code/
'Web Technologies 🖥️ > java' 카테고리의 다른 글
equals() 랑 "==" 랑 똑같은 거 아니였어? - JAVA (1) | 2023.12.17 |
---|---|
scan.next() 사용 시 주의 사항 - JAVA (0) | 2023.12.14 |
BufferedWriter 는 뭔데 sysout 보다 빨라? - JAVA (0) | 2023.12.08 |
method에 final을 붙이면 어떻게 돼? (final 메소드) - JAVA (45) | 2023.10.31 |
final의 불가변성 (feat... list, Collections.unmodifiableList) - JAVA (2) | 2023.10.21 |