반응형
* 무분별한 if-else 줄이는 코딩 방법(Callback Hell 탈출)
if-else는 프로그래밍을 하면서 필수적으로 사용된다.
하지만 무분별한 if-else문 남용은 가독성을 떨어트려 이해하기 어려운 코드가 된다.
특히, JS에서 많이 사용되는 Callback Hell이라고 불리는 문제를 해결하는 방법을 알아보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //Callback Hell void getConnection() { Server server = getServer(); if (server != null) { Client client = server.getClient(); if (client != null) { Connection con = con.getConnection(); if (con != null) { // 실제 처리할 로직 } } } } | cs |
위 코드는 Callback은 아니지만, 무분별한 if문 남발로 가독성이 떨어지는 코드이다.
이를 해결할 수 있는 방법은 if문에서 예외 처리해야할 부분을 잡아서 처리하는 방법이 좋다.
예외 처리를 미리 해주면 단순 프로그래밍시만 아니라 Backtracking이나 DFS같은 재귀함수를 쓸 때도 무한루프에 빠지지 않을 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static void getConnection() { Server server = getServer(); if (server == null) { return; } Client client = server.getClient(); if (client == null) { return; } Connection con = con.getConnection(); if (con == null) { return; } // 실제 처리할 로직 } | cs |
위와 같이 if문으로 예외 처리를 통해 바로 return으로 함수를 종료하면 가독성이 높아진다.
또한, if문 조건에는 주로 간단한 내용을 조건으로 주로 걸고, 복잡한 내용은 else문에 작성하는 것이 일반적이다.
1 2 3 4 5 6 7 8 9 10 11 | public int checkNumber(int inputNumber) { if (inputNumber == 1) { //처리 } else if (inputNumber == 2) { //처리 } else if (inputNumber == 3) { //처리 } else if (inputNumber == 4) { //처리 } } | cs |
위 코드 역시 inputNumber가 1인 경우에도 끝까지 확인을 해야한다는 단점이 있다.
이러한 경우 역시 if문으로 조건을 만족하면 return 시키는 방법이 효율적이라고 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public int checkNumber(int inputNumber) { if (inputNumber == 1) { //처리 return ret; } if (inputNumber == 2) { //처리 return ret; } if (inputNumber == 3) { //처리 return ret; } if (inputNumber == 4) { //처리 return ret; } } | cs |
* 참고
Java 성능 좋은 분기문을 쓰는 방법, if문에서 연산 순서 (if문에서 좋은 퍼포먼스를 만들기, && || 연산자 우선 순위)
반응형
'∙Java' 카테고리의 다른 글
JAVA 코딩테스트 기본 지식 (0) | 2022.04.28 |
---|---|
[JAVA] int, char, String 형변환 정리 (1) | 2019.04.30 |
[Java] OOP(객체지향 프로그래밍) 특징과 꼬리질문 (0) | 2019.01.12 |
[Java] ==와 equals()의 차이 (0) | 2019.01.10 |