프로그래밍/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);
}