10장 변수 사용 시 고려할 사항
목차
- 10.1 데이터 사용 능력
- 10.2 변수 선언을 쉽게 만드는 방법
- 10.3 변수 초기화 가이드라인
- 10.4 범위
- 10.5 지속성
- 10.6 결합시점
- 10.7 데이터형과 제어 구조 사이의 관계
- 10.8 변수를 한 가지 목적으로만 사용하는 방법
10.1 데이터 사용 능력
이 장에서 기본적인 테스트를 통해 내가 어떤 수준의 데이터 사용 능력이 있는지 점검해보았다. 나는 숙련된 개발자 수준이 나왔는데 전혀 신뢰할 수 없었다. 내 스스로가 숙련되지 않았다고 생각하는데 이렇게 높은 점수가 나온 것이 의아했다. 그래도 그동안 공부한 것이 헛되지는 않았다는 뿌듯함은 있었다. 정말로 숙련된 개발자가 되기 위해 자기 개발에 힘써야겠다.
10.2 변수 선언을 쉽게 만드는 방법
요즘 자바스크립트에 대해 공부하면서 'use strict'를 사용하지 않을 경우 변수를 선언하지 않고도 사용할 수 있다는 부분에 대해 알게 되었다. 처음에는 편리한 기능이라고 생각했지만, 이 부분이 에러의 발생을 유발할 수 있고, 협업 및 디버깅과 유지보수 단계에서 더 큰 비용이 들게할 수 있다는 점을 알게 되었고, 이 부분도 이에 대해 설명하고 있다. 최대한 변수를 명시적으로 선언하고, 이름 규칙을 정하고, 변수의 이름을 검사하는 과정을 통해 남들이 보기에 더 이해하기 쉬운 코드를 작성할 수 있는 능력을 키워야 한다는 다짐을 하게 되었다.
10.3 변수 초기화 가이드라인
변수는 최대한 선언 시 초기화하는 것이 좋다. 만약 불가능 하다면 선언하는 곳 바로 밑 또는 가장 가까운 곳에서 초기화하고, 이를 사용해야 한다. 그래야 코드를 이해하기도 좋고, 내가 사용할 때도 더 쉽게 사용할 수 있다. 이는 '10.4 범위'에서도 이어지는 부분이기 때문에 10.4절에서 조금 더 자세히 설명하겠다.
10.4 범위
범위는 변수가 알려진 정도와 프로그램에서 참조될 수 있는 정도를 가리킨다. 제한적이거나 작은 범위를 갖는 변수는 프로그램에서 작은 영역에서만 그 것을 알고 있다. 하나의 작은 루프에서만 사용되는 루프 인덱스가 한 가지 에다. 큰 범위를 갖는 변수는 프로그램 내의 여러 곳에서 그것을 알고 있다. 프로그램 전체에 사용되는 직원 정보 테이블이 그 예다.
이 장에서는 변수의 범위와 수명을 최대한 짧게 유지하는 것에 중점을 두고 있다. 변수의 수명은 다음의 코드로 설명하겠다.
// c++
1: int a = 0;
2: int b = 0;
3: int c = 0;
4: a = b + c;
위의 코드에서 a는 line 1에서 선언되고, line 4에서 사용되었으므로 범위는 2이다. 선언된 곳과 사용된 곳 사이에 몇 개의 라인이 있는지가 범위를 나타낸다.
b의 범위는 1, c의 범위는 0이다.
// c++
1: int a = 0;
2: int b = 0;
3: int c = 0;
4: b = a + 1;
5: b = b / c;
위의 코드에서 a의 범위는 2이다.
b는 line 2에서 선언되고 line 4와 line 5에서 사용된다. line 2와 line 4 사이의 범위는 1, line 4와 line 5 사이의 범위는 0이므로 b의 범위는 (1 + 0) / 2 = 0.5다.
변수를 선언한 부분에서 변수를 마지막으로 참조하는 부분까지가 변수의 수명이다. 이를 짧게 유지하면 코드를 더 쉽게 이해할 수 있다. 또한 초기화 오류가 발생할 가능성도 줄여준다.
// c++
1: int a = 0;
2: int b = 0;
3: int c = 0;
4: b = a + 1;
5: b = b / c;
이전에 보았던 코드이다. 여기서 변수의 수명을 알아보자.
a의 경우 line 1에서 선언되고 line 4에서 마지막으로 사용되었으므로 수명은 4이다.
b의 경우 line 2에서 선언되고 line 5에서 마지막으로 사용되었으므로 수명은 4이다.
c의 경우 line 3에서 선언되고 line 5에서 마지막으로 사용되었으므로 수명은 2이다.
위의 코드의 변수의 평균 수명은 (4 + 4 + 2) / 3 = 3.3 이다.
변수의 수명을 최소화할 수 있는 방법은 여러가지가 있는데 이번에 새로 알게된 개념은 '처음에는 범위를 최대한 제한하고 필요한 경우 변수의 범위를 늘리는 것'이 효과적이란 것이다. 지역변수로 선언하고 전역변수로 바꾸는 것이 전역변수에서 지역변수로 바꾸는 것보다 훨씬 쉬울 것이라는 것이다.
10.5 지속성
"지속성"은 데이터의 수명을 나타내는 또 다른 단어다.
10.6 결합 시점
"결합 시점"은 변수와 그 값이 서로 연결된 시간을 의미하는데 프로그램의 유지 관리와 변경 용이성 면에서 광범위하게 관련된 초기화에 대한 주제에 해당한다.
이 부분의 내용은 지금 정확하게 이해하지 못했지만, 최대한 이해한 내용을 써보자면 결합 시점이 이를수록 유연성이 낮아지고 복잡성이 줄어든다는 점이다.
10.7 데이터형과 제어 구조 사이의 관계
순차적 데이터는 프로그램의 순차적 명령문으로 변환한다.
선택적 데이터느 프로그램에서 if와 case 명령문으로 변환한다.
반복되는 데이터는 프로그램에서 for, repeat, while 루프 구조로 변환한다.
10.8 변수를 한 가지 목적으로만 사용하기
변수를 한 가지 목적으로만 사용해야 한다. 또한 숨은 의미가 있는 변수를 피하고 선언된 모든 변수를 사용하는지 확인해야 한다.