////
Search
Duplicate
🪜

9. 변수와 가독성

이 장에서는 변수에 적절한 네이밍을 붙여주지 않으면 가독성이 얼마나 저하되는지 살펴본다.
특히 집중해서 살펴보아야할 세 가지 문제가 있다.
변수의 수가 많을수록 기억하고 다루기 더 어려워진다.
변수의 범위가 넓어질수록 기억하고 다루는 시간이 더 길어진다.
변수값이 자주 바뀔수록 현재값을 기억하고 다루기가 더 어려워진다.

변수 제거하기

불필요한 임시 변수들
흔히 날짜 객체를 생성할 때, now라는 이름을 가진 변수를 만들고는 한다. now 변수는 꼭 필요한 변수일까?
다음과 같은 이유로 now 변수는 적합하지 않다.
복잡한 표현을 잘게 나누지 않는다.
명확성에 도움이 되지 않는다.
한 번만 사용된다. 즉 재사용성이 없다.
중간 결과 삭제하기
중간 연산 결과를 저장해두는 임시 변수들을 종종 확인할 수 있다.
구현이 그렇게 복잡하지 않다면 이는 되려 시스템 복잡도를 올리는 행위다.
흐름 제어 변수 제거하기
반복문에서 반복문을 탈추하기 위해 불리언 변수를 사용하는 경우가 대표적이다.
이를 흐름 제어 변수라고 하는데, 이들의 목적은 순수하게 프로그램 제어에 있다. 그리고 이는 프로그램의 구조를 잘 설계하면 제거할 수 있다.

변수의 범위를 좁혀라

전역 변수는 네이밍 그 자체로 맥락을 제공해야 한다. 그래서 전역 변수는 피하라라는 조언을 한 번쯤은 들어봤을 것이다.
전역 변수뿐만 아니라 모든 변수의 범위를 좁히는 일은 언제나 좋다. 즉 변수가 적용되는 범위를 제한하라는 것이다.
많은 메소드를 정적 메소드로 만들어서 클래스 멤버 접근을 제한하라. 정적 메소드는 코드를 읽는 사람에게 이 메소드는 변수들로부터 독립적임을 알려주는 좋은 방법이다.
커다란 클래스를 여러 작은 클래스로 나누는 방법도 있다. 이 방법은 작은 클래스들이 서로 독립적일 때 유용하다.

값을 한 번만 할당하는 변수를 선호하라

변수 값이 여러 곳에서 변경된다는 것은 특정 시점에서의 변수가 어떤 값을 가지고 있기 예측하기 힘들다는 어려움을 낳는다.

요약

이 장에서는 프로그램에서 변수를 덜 사용하고 최대한 가볍게 만들어 코드의 가독성을 높일 수 있음을 알아보았다.
방해되는 변수를 제거하라.
굳이 존재할 필요가 없는 변수들은 없애는 것이 좋다. 중간 결과값이나 일회성 변수들이 있다.
각 변수의 범위를 최대한 작게 줄여라.
각 변수의 위치를 옮겨서 변수가 나타나는 줄의 수를 최소화하라.
값이 한 번만 할당되는 변수를 선호하라.
값이 한 번만 할당되는 const, final같은 불변 변수들은 이해하기 쉽다.