Reassigned local variable 경고

김동헌·2024년 7월 5일
0

SpringBoot

목록 보기
18/19
post-thumbnail

IntelliJ IDEA를 사용하면서 "Reassigned local variable" 경고가 발생했습니다. 그냥 지나칠 수 있지만 어떤 이유에서 발생하였고, 해결하지 않을 경우 어떤 불이익이 있을지에 대해서 알아보고 싶어서 포스팅을 진행하였습니다.


발생 이유

"Reassigned local variable" 경고는 변수가 다시 할당될 때 IntelliJ IDEA에서 발생합니다. 이는 로컬 변수를 선언한 후, 해당 변수에 새 값을 할당할 때 발생합니다.

변수 재할당 : 변수가 여러 번 초기화되거나 값이 바뀌는 경우

int count = 0;
count = 5;

복잡한 로직 : 변수가 복잡한 로직을 통해 여러 번 변경되는 경우

int result = calculateValue();
result = modifyValue(result);

어떤 문제가 있을까?

코드 가독성

변수가 다시 할당되는 코드는 가독성을 떨어뜨릴 수 있습니다.

예를 들어 int count = 0을 선언하고, count가 지속적으로 변경되면, 코드가 길어지거나 복잡해질수록 변수의 이전 값을 기억해야하므로 점차 읽기 어려워집니다.

코드 유지보수성

유지보수성 측면에서도 변수가 여러 번 재할당되면 코드의 의도를 이해하기 어렵습니다.

다른 개발자가 코드를 수정하거나 확장할 때, 각 메소드 호출이 변수에 어떤 영향을 미치는지 파악하기 힘들어 문제가 발생할 수 있습니다.
이러한 변수 재할당이 많아질수록 버그가 발생할 가능성도 높아집니다.

예를 들어, 아래의 코드에서 각 메소드 호출이 value에 어떤 영향을 미치는지파악해야 하므로 유지보수가 어려워집니다.

int value = calculateInitialValue();
value = adjustValue(value);
value = finalizeValue(value);

디버깅

변수가 여러 번 재할당되면 디버깅이 어려워집니다.

예로, 변수 count가 여러 번 변경되는 상황에서 특정 시점의 값을 확인하고자 할 때, 변수의 변경 이력을 추적해야 합니다.
이는 디버깅 시간 증가와 복잡성 향상으로 이어질 수 있습니다.

int count = 0; // point 1
count = 5; // point 2
count = processCount(count); //point 3

각 디버깅 포인트에서 count의 값을 확인해야 하므로 변수의 상태를 추적하는 데 많은 노력이 필요합니다.

함수에서 매개변수 재할당을 사용하면 인수와 매개변수 값의 차이가 발생하거나, 주소 값이 동일하여 변경점을 인지하지 못할 수도 있습니다.


최선의 방법

위와 같은 문제로 인해, 변수 재할당은 지양하는게 좋습니다.
변수 재할당을 최소화하면, 코드의 가독성, 유지보수성, 디버깅 과정이 모두 간단해집니다.

변수 재할당 최소화

변수 재할당을 지양하며, 가능하면 변수를 final로 선언하여 변경되지 않도록 합니다.

final int initialCount = 0;
final int processedCount = processCount(initialCount);

명확한 변수 이름 사용

각 단계의 결과를 나타내는 명확한 변수 이름을 사용합니다.

int initialCount = 0;
int updatedCount = 5;
int processedCount = processCount(updatedCount);

메소드 추출

복잡한 로직을 메소드로 분리하여 가독성과 유지보수성을 향상시킵니다.

int count = initializeCount();
count = updateCount(count);

이러한 변수 재할당을 줄임으로써 코드를 더 명확하게 만들고, 유지보수성을 높이며, 디버깅을 쉽게 할 수 있습니다.

코드를 작성할 때 이러한 원칙을 염두에 두면 더 나은 품질의 코드를 작성할 수 있습니다.

profile
백엔드 기록 공간😁

0개의 댓글