§ [2.6 조언] _  어떻게 C++로 멋진 프로그램을 짤 수 있을까?

- 가능한 경우, 정적으로 타입체크되도록 한다.

- 정보는 지역적으로 보관한다. (전역변수와 포인터의 사용을 최소화)

- 지나치게 추상화하지 않는다.

- C++의 세부사항까지 전부 알 필요는 없다.

 

 

§ [3.5 조언] _ 추상화 메커니즘

- 무방비의 new와 delete연산은 피한다.

- 인터페이스와 구현의 완벽한 분리가 필요하다면, 추상클래스를 인터페이스로 활용한다.

- 클래스 계층구조 설계시, 구현상속과 인터페이스 상속을 구분한다.

- 객체의 복사, 이동, 소멸을 통제해야 한다.

- 컨테이너는 값으로 반환한다. (효율성이 중요하다면, move를 이용)

- 함수 템플릿으로 일반적인 알고리즘을 표현한다.

- 람다를 비롯한 함수객체를 이용해 정책과 작동을 표현한다.

- 타입, 템플릿 별칭을 이용해 유사한 기능은 동일한 이름을 부여한다.

 

 

 

§ [4.6 조언] _ 컨테이너와 알고리즘

- 선택가능하다면, 다른 라이브러리보다는 표준라이브러리(std namespace에 정의된)를 우선사용한다.

- 표준라이브러리가 만능이라 생각하지 말자.

- C 스타일 문자열(char*) 보다는 string을 우선사용한다.

- arr[T] 보다는 vector<T>, map<K,V>, unordered_map를 우선 사용한다.

- vector를 기본 컨테이너로 활용한다.

- push_back()  ||  back_inserter 를 통해 컨테이너에 원소를 추가한다.

- 배열에 realloc을 사용하지 않고, vector에 push_back()을 사용한다.

- 일반적인 예외는 main()문에서 잡는다(catch).

- 표준 알고리즘에 대해 직접 만들기 보단 표준알고리즘을 우선사용한다.

- 반복자가 장황해지면 컨테이너 알고리즘을 정의한다.

- 완전한 컨테이너 범위기반 for문을 사용한다.

 

 

 

 

§ [5.7 조언] _ 병행성과 유틸리티

- unique_ptr을 이용해 다형성타입 객체를 참조한다.

- shared_ptr을 이용해 공유객체를 참조한다.

- 공유데이터의 사용은 최소화한다.

- 심사숙고없이 효율성이라는 이유만으로 통신을 위해 공유데이터를 선택하지 말 것.

- 간단한 패턴매칭을 위해서는 정규표현식을 사용한다.

- 수치타입의 속성은 numeric_limits로 접근할 수 있다.

- 수치계산처리를 시도할 때는 라이브러리를 활용하자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts