항목 26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자
쓸데없는 생성자와 소멸자 호출을 막기 위해, 변수 정의는 최대한 늦추도록 하자. 또한, for 문 안에서 변수를 정의해야할 경우, 생성자/소멸자 호출과 대입연산 중 어느것이 더 자원을 많이 먹을지 고려한 다음 사용하자
항목 27: 캐스팅은 절약, 또 절약! 잊지 말자
구형 스타일의 캐스트가 아닌 C++ 스타일의 캐스트를 선호하자, 발견하기도 쉽고 의도파악에 도움이 된다.
가능한 캐스팅을 피하되, 어쩔수 없이 써야 된다면 함수 안에 숨길 수 있도록 하자. 그러면 최소한 사용자는 자신의 코드에는 캐스팅을 넣지 않을 수 있다.
항목 28: 내부에서 사용하는 객체에 대한 핸들을 반환하는 코드는 되도록 피하자
캡슐화 정도를 높이고, 상수멤버 함수가 상수성을 유지하도록 동작할 수 있도록 해야된다. 또한 무효참조 핸들이 생기는 현상을 최소화 할 수 있기 떄문이다.
항목 29: 예외 안정성이 확보되는 그날 위해 싸우고 또 싸우자!
실행 중 예외가 발생하더라도 자원을 누출시키지 않고, 자료구조를 더럽힌 채로 내버려 두지 않는 함수를 만들자.
기본적인 보장, 강력한 보장, 예외 금지 보장을 함수가 제공하도록 하자.
어떤 함수가 제공하는 예외 안전성 보장의 강도는 그 함수 내에서 호출하는 함수들이 제공하는 가장 약한 보장을 넘지 않는다
항목 30 : 인라인 함수는 미주알 고주알 따져서 이해해 두자
자주 호출되고 작은 함수에 대한 인라인처리는 쓸데없는 코드 부풀림 현상을 최소화 시키고, 프로그램의 속도를 높일 수 있도록 도와준다.
항목 31: 파일 사이의 컴파일 의존성을 최대로 줄이자
핸들 클래스와 인터페이스 클래스를 통해, 선언에 의존하도록 작업을 하자.
라이브러리 헤더는 그 자체로 모든 것을 갖추어야 한다. 또한 선언부만 갖고 있는 형태여야 한다.
'개발자의 길 > Effective C++' 카테고리의 다른 글
[Effective C++] Chapter 6 상속, 그리고 객체 지향 설계 (작성중) (0) | 2020.03.07 |
---|---|
[Effective C++] Chapter 4 설계 및 선언 (0) | 2020.02.29 |
[Effective C++] Chapter 3 자원 관리 (0) | 2020.02.29 |
[Effective C++] Chapter 2 생성자, 소멸자 및 대입 연산자 (0) | 2019.03.24 |