본문 바로가기

프로그래밍(공통)

Code Complete 변수

변수에 대한 참조를 지역화하라.

변수에 대한 참조가 가능한 가까이 있는게 취약성을 줄이는 방법이다.

a = 0;
b = 0;
c = 0;
a = b+c;

위 코드에서 a에 대한 첫번째 참조와 두번째 참조의 폭(span)는 2이며, b는 1, c는 0이다. 추가로 이 폭을 줄이면 코드의 가독성도 높아진다.

변수의 수명을 가능한 짧게 유지하라.

변수의 수명은 첫 번째 참조와 마지막 참조 사이의 폭이다. 예를 들어 line no 1.에서 첫 참조되고 no.25에서 마지막 참조되었다면 수명은 25 명령문이다. 이 때, 그 외 참조가 하나도 없었다면 참조의 span은 23이며, 매 라인마다 참조가 있었다면 span은 0이다. 이 수명 또한 줄일수록 코드의 안정성과 가독성이 높아진다.

바인딩 시간

바인딩 시간은 변수와 실제 값이 연결되는 시간을 의미한다. 예를 들어, 변수와 값이 코드가 작성될 때, 컴파일될 때, 로드될 때 등이다.
일반적으로 바인딩 시간이 이를수록, 유연성이 낮아지고 복잡성이 낮아진다.

다음은 코드가 작성될 때 바인딩되는 예시다.

titleBar.color = #111111

다음은 이보다 조금 늦게 바인딩되는, 컴파일 타임에 바인딩되는 예시다.

private static final int COLOR_BLUE = 0xFF;
private static final int TITLE_BAR_COLOR = COLOR_BLUE;

titleBar.color = TITLE_BAR_COLOR;

다음은 이보다 더 늦은 실행 시간에 바인딩 되는 예시이다.

titleBar.color = ReadTitleBarColor();

변수를 한 가지 목적으로만 사용하라.

이는 SRP와 유사하다. 하나의 책임을 가져야하고, 변경되는 원인도 하나여야 한다.

두 가지 목적을 위해 사용하는 예시

int sum = x + y;

sum = z + 1;

숨겨진 의미를 갖는 변수를 사용하여 두 가지 목적을 위해 사용하는 예시

  • pageCount는 출력될 페이지의 수를 의미한다. 그리고 -1은 오류가 발생했다는 것을 의미한다.