프로그래밍/C++

리팩토링 원칙

이재만박사 2020. 11. 20. 15:32

변수를 사용하는 부분에 있어서 가능하면 const를 사용하라


int i = 10;

for(int j = 0; j < i; ++j)

{

    ++i;

}



무한 루프로 돌아 논리 상의 버그이다 


하지만 const int i = 10; 으로 선언하면 코드 오류이기 때문에 컴파일러가 

잡아낸다


따라서 가능한 많은 경우에 const를 사용하자




explicit Annotation(const string text)

 : value(move(text))

{

}



위의 코드는 에러가 난다


value에 text를 넣는데 text를 넣고 move를 하면 text에는 nullptr이 들어가는데


const로 되어 있기 때문에 변경이 안 된다


위와 같은 경우는 const를 삭제해야 한다




template <typename T>

void swap(T& a, T& b) {

    T tmp(a);

    a = b;

    b = tmp;

}



위의 코드보다는 아래의 코드가 훨씬 효율적이다



template <typename T>

void swap(T& a, T& b) {

    T tmp(std::move(a));

    a = std::move(b);

    b = std::move(tmp);

}