관리 메뉴

기억을 위한 기록들

[CPP-effective] 5-1 변수 정의는 최대한 늦게하자 본문

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방법이 맞다.

 

 

정리

* 변수 정의는 늦츨 수 있을 때까지 늦추자. 프로그램이 더 깔끔해지고, 효율도 좋아진다.