Posts [Java] 반복문 작성 시 안 좋은 습관
Post
Cancel

[Java] 반복문 작성 시 안 좋은 습관

반복문을 작성할 때 안 좋은 습관

1) 불필요하게 조건문에 함수 호출문을 넣는 습관

1
2
3
4
5
public void example(List<Integer> numbers) {
    for (int i = 0; i < numbers.size(); i++) {
        ...
    }
}

만약 위처럼 코드를 작성하고 numbers의 사이즈가 10만개라 가정한다면 numbers.size()메소드를 불필요하게 10만번 호출하게 될 것이다. 그래서 대량의 데이터를 순회하고자 한다면 아래와 같이 리팩토링을 할 수가 있다.

1
2
3
4
5
6
public void example(List<Integer> numbers) {
    int size = numbers.size();
    for (int i = 0; i < size; i++) {
        ...
    }
}

하지만 현실의 코드는 대부분 1000개 이하의 데이터를 주로 순회할 것이기에 가독성을 고려하여 for (int i = 0; i < numbers.size(); i++) 이처럼 작성하는 것이 적절하다고도 생각할 수 있다.

2) 무한 루프에 빠질 가능성이 있는 경우의 while문을 사용하는 습관

1
2
3
4
5
6
7
8
9
10
public void example(List<Integer> numbers) {
    boolean flag = true;
    int index = 0;
    while (flag) {
        if (numbers.get(index++).equals(5)) {
            flag = false;
        }
        ...
    }
}

while문은 잘못하면 무한 루프에 빠질 우려가 있기에 for문 사용을 권장한다. 코드를 개발한 사람은 numbers에 당연히 5라는 값이 존재할 것이라 생각을 하고 구현을 했을 것이다. 하지만 협업하는 환경에서 다른이가 5가 없는 List를 인자로 호출할지는 정말 아무도 모르는 일이며 무한루프에 빠져 서버는 계속 오류를 뱉으며 서버를 재기동해야 할 것이다.

하지만, 상황에 따라 while문이 더 적절한 경우도 있으며 문제를 유발할 가능성이 있는 while문인지 항상 점검해 볼 필요가 있다.

출처

This post is licensed under CC BY 4.0 by the author.