페이지

2015년 1월 4일 일요일

변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자.

* 변수 정의는 늦출 수 있을 때까지 늦춥시다. 프로그램이 더 깔끔해지며 효율도 좋아집니다.

 언제까지 늦추느냐 ? 사용하기 전까지 늦추는건 기본이고, 초기화 인자를 손에 넣기 전까지 늦출 수 있는지도 둘러봐야 한다. 변수 선언과 동시에 초기화하지 않으면 기본 생성자가 호출된 뒤 다시 값을 넣을때 대입연산자나 다른 set함수를 호출해야 하기 때문이다.

 그럼.... Loop에 대해서는 어떻하지 ?

Widget w;
for (int i = 0; i < n; i++) {
    w = func(i);
}

for (int i = 0; i < n; i++) {
    Widget w(func(i));
}



위의 방법 : 생성자 1번 + 소멸자 1번 + 대입 n번
아래 방법 : 생성자 n번 + 소멸자 n번

위의 방법이 일반적으로 효율이 훨씬 좋다. n이 커지면 커질수록 더더욱 그렇다. 하지만 w의 범위가 Loop 보다 더 넓어지므로 프로그램 이해도 와유지보수성에는 안좋다.




그냥 이렇게 하자. 대입이 생성/소멸자 쌍보다 비용이 덜 들고, 전체 코드에서 수행 성능에 민감한 부분을 건드리는 중이라고 생각하지 않는다면, 앞뒤 볼 것 없이 아래 방법으로 가는 것이 좋다.

댓글 없음:

댓글 쓰기