티스토리 뷰

 

Effective C++ 이펙티브 C++
스콧 마이어스 저/곽용재

 

1. C++에 왔으면 C++의 법을 따릅시다

 

항목 1 : C++를 언어들의 연합체로 바라보는 안목은 필수

  • C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라집니다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐입니다.

 

항목 2 : #define을 쓰려거든 const, enum, inline을 떠올리자

  • 단순한 상수를 쓸 때는, #define보다 const 객체 혹은 enum을 우선 생각합니다.
  • 함수처럼 쓰이는 매크로를 만들려면, #define 매크로보다 인라인 함수를 우선 생각합시다.

 

항목 3 : 낌새만 보이면 const를 들이대 보자!

  • const를 붙여 선언하면 컴파일러가 사용상의 에러를 잡아내는 데 도움을 줍니다. const는 어떤 유효범위에 있는 객체에도 붙을 수 있으며, 함수 매개변수 및 반환 타입에도 붙을 수 있으며, 멤버 함수에도 붙을 수 있습니다.
  • 컴파일러 쪽에서 보면 비트수준 상수성을 지켜야 하지만, 여러분은 개념적인(논리적인) 상수성을 사용해서 프로그래밍해야 합니다.
  • 상수 멤버 및 비상수 멤버 함수가 기능적으로 서로 똑같게 구현되어 있을 경우에는 코드 중복을 피하는 것이 좋은데, 이때 비상수 버전이 상수 버전을 호출하도록 만드세요.

 

항목  4 : 객체를 사용하기 전에 반드시 그 객체를 초기화하자

  • 기본제공 타입의 개체는 직접 손으로 초기화합니다. 경우에 따라 저절로 되기도 하고 안되기 하기 때문입니다.
  • 생성자에서는, 데이터 멤버에 대한 대입문을 생성자 본문 내부에 넣는 방법으로 멤버를 초기화하지 말고 멤버 초기화 리스트를 즐겨 사용합시다. 그리고 초기화 리스트에 데이터 멤버를 나열할 때는 클래스에 각 데이터 멤버가 선언된 순서와 똑같이 나열합시다.
  • 여러 번역 단위에 있는 비지역 정적 객체들의 초기화 순서 문제는 피해서 설계해야 합니다. 비지역 정적 객체를 지역 정적 객체로 바꾸면 됩니다.

 

- James Song

댓글