지연평가와 선행평가에 대해서 어느정도 감이 오는 사람이라면, 아주 손쉽게 이해되는 장이다.

변수 정의를 늦출수 있게 된것은 C++의 어디에서건 변수를 선언 할수 있게 만들어 줌으로써 생겨난 방법일것이다.

왜 늦출 수 있는 데까지 늦추어야 하는가?
가장 큰 이유는 변수의 생성 대입 초기화 라는 작업이, 일어날 필요가 없게 될 경우가 생기기 때문이다. 예를 들어서, 아주 큰 객체를 생성하여 대입하고 하고, 특정 함수를 작업하고, 다시 선언된 큰 객체를 사용하고 날려 버리는 작업이 있다고 했을때, 특정 함수에서 .. 오류가 나서, 이 이 객체를 쓰지도 못하게 되었다고 친다면, ... 이해가 쉽게 갈것이다.

{
    string encrypted;
    if(password.lengh() < MinimumPasswordLength)
    {
        throw logic_error("Password is too short");
    }

    ....
        return encrypted;
}

이렇게 되었을때 예외가 발생하면 encryted 객체는 생성할 필요조차 없게 된것이다.



무조건 늦추는것이 좋은것인가?
이건 또 아니다. 선행평가 함으로써 얻을수 있는 이익이 있다면 그때는 선행 평가를 해야만 한다.



다른 최적화 방법은 없는가?
루프문안에 선언된 변수에 대해서 생각해 볼수도 있다. 루프문안에 넣을때, 가독성은 높아지지만, 반대로 루프 돌때 계속 연산되어진다는 점이 있고, 루프밖에 놓는다고 했을때는 이 반대이다.

각 상황에 맞게 판단하여 사용하는게 좋을듯 싶다.


이것만은 잊지 말자!
1. 변수 정의는 늦출 수 있을 때까지 늦추자.

관련 링크
http://ikpil.tistory.com/328
http://ikpil.tistory.com/372
http://zlqhem.springnote.com/pages/152648
http://kelly.springnote.com/pages/554763

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기