C & CPP/Effective C++
[CPP-effective] 5-1 변수 정의는 최대한 늦게하자
에드윈H
2021. 4. 30. 16:23
예를 들어 어떤 함수안에서 어떤 변수를 선언해놓고 그 변수를 사용하기도전에 예기치 못한 상황으로 해당 함수를 탈출하게 되면 해당 변수는 사용해보지도 못하고 선언만 해놓고 다시 소멸하게 된다.
void DoSomething()
{
//..
Player tempPlayer;
if(/*어떤 상황으로 인한*/) //if안에 들어가면 tempPlayer는 생성과 소멸만하고 끝난다.
return; //탈출
//tempPlayer 객체의 사용
//..
}
이런것들은 위해 최대한 사용하기 직전에 변수를 정의하자.
void DoSomething()
{
//..
if(/*어떤 상황으로 인한*/)
return; //탈출
Player tempPlayer;
//tempPlayer 객체의 사용
//..
}
그리고 어떤 루프문을 돌때
A방법
Item myItem
for(int i=0;i<n;i++)
{
myItem= i;//i에 따라 뭔가 달라지는 값
//..
}
B방법
for(int i=0;i<n;i++)
{
Item myItem = i; //i에 따라 뭔가 달라지는 값
//..
}
두가지 방법이 있을때 걸리는 비용은
A방법 : 생성자 1번 + 소멸자 1번 + 대입 n번
B방법 : 생성자 n번 + 소멸자 n번
이렇게 차이가 있다. 사실 두개중에 정답은 없고
1. 대입이 생성자,소멸자 쌍보다 비용이 덜든다.
2. 전체 코드에서 수행 성능에 민감한 부분을 건드리는 중이다.
두가지다 아니라면, B방법이 맞고,
대입의 비용이 더 비싸면 A방법이 맞다.
정리
* 변수 정의는 늦츨 수 있을 때까지 늦추자. 프로그램이 더 깔끔해지고, 효율도 좋아진다.