§ [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로 접근할 수 있다.
- 수치계산처리를 시도할 때는 라이브러리를 활용하자.
'C | C++ > Modern C++' 카테고리의 다른 글
Design Pattern II_Strategy Pattern, Observer Pattern, Adapter Pattern (0) | 2022.11.13 |
---|---|
Design Pattern I_Singleton, Factory method, bridge pattern (0) | 2022.11.10 |
C++로 Java와 동일한 로직을 구현해보자! (0) | 2022.11.02 |
[Effective Modern C++ item 1]: template 형식 연역 규칙을 숙지하라! (0) | 2022.10.28 |
☆Prev. C++, Modern C++의 변화 (2) | 2022.10.28 |