Contents
프로그래밍 왕초식(변수 아끼기)
   Jun 5, 2022     4 min read

안좋은 예시

  1. 변수를 많이쓸 때
String name = any.getName(); // 변수를 미리 선언하고
int age = 0;

...
...

age = 2021 - any.getBirthYear(); // 변수를 중간에 변경도하고
...
...
System.out.println("이름 : " + name); // 사용하고
System.out.println("나이 : " + age);
  1. 변수의 용도/의미를 바꿔가며 사용
int value = someOp();
...

if(value == 0){
   value = someOp2();
   ...
}

value = someOp3();
if(value ==2) {

}

인지 부하

변수 범위 증가, 변수 개수 증가, 변수 용도 변화의 문제점은 추적의 복잡함을 늘어나고 인지부하까지 이어져 코드이해 노력이 증가하여 비용이 많은 비용이 발생하게 된다.

해결법 : 변수 아껴쓰기 1

  • 선언 하고 1~2번 참조하는 변수는 필요 여부 검토
String name = any.getName();
String id = any.getId();

Summary ret = Summary.builder()
     .name(name)
	   .id(id)
     .build();

변경 후

👇👇👇👇👇

//변수를 선언하지 말고 직접코드를 넣는다.
Summary ret = Summary.builder()
     .name(name)
	   .id(id)
     .build();

해결법 : 변수 아껴쓰기 2

  • 의미를 더해주는 변수 위주로 사용하기
    • 식이 복잡하거나 길어질 경우 변수 이름으로 설명

      int age = 2021 - mem.getBirthyear();
      
  • 같은 계산을 반복하는 경우 변수로 재사용

  • 가능한 선언과 값 할당을 한 번에
int age;
...(age 사용없음)
age = 2021 - mem.getBirthyear();

해결법 : 최대한(절대) 변수의 용도/의미 변경 X

  • 의미나 용도가 다르면 다른 변수 사용할 것
    • 단순히 타입이 같다고 변수를 막 이런 저런 용도로 쓰지 말 것
    • 코드 분석뿐만 아니라 향후 코드 정리도 힘들게 한다.
Response<String> resp = callApi1();
...
...

resp = callApi2();

변경 후

👇👇👇👇👇

Response<String> resp1 = callApi1();
...
...
Response<String> resp2 = callApi2();

해결법 : 변수 범위 좁히기

  • 변수가 사용되는 코드 범위를 최소화하기
    • 짧은 루프 블록 안으로 한정
    • 짧은 if-else 블록 안으로 한정
    • 짧은 메서드로 한정
    • 사용도기 직전에 정의

코드를 볼 때 변수가 어떤 식으로 바뀌는지 상태를 추적이 용이해야한다. 변수의 범위가 짧으면 짧을수록 추적의 부하가 줄어든다. 변수는 최대한 짧은 범위에서 짠다.!

String msg;
for(Some some : somes){
	msg = some.getName() + ":" + ....;
	...
}

변경 후

👇👇👇👇👇

for(Some some : somes){
	String msg = some.getName() + ":" + ....; //for 안에서만 쓰는 변수면 안에서 선언하자!
	...
}

String msg = ...;
...(코드 10, msg 변경 없음)
return Result.message(msg);

변경 후

👇👇👇👇👇

...(코드 10)
String msg = ...; //변수를 사용하기 직전에 선언하고 사용하자 !
return Result.message(msg);

변수를 아끼는 연습하기

  • 멋진 설계, 화려한 기술 다 좋지만 기본인 코드는 정말 중요하다고 말씀하신다.
    • 코드가 없다면 모두 소용없음
  • 중요한 코드의 복잡도를 낮추고 가독성을 높이는 쉬운 방법

    → 변수 아끼고 변경 줄이고 범위 좁히고

참고 : Youtube 채널 - 최범균 https://www.youtube.com/watch?v=kRdML08R2Yo