[C++] Representation & Class definition
CS/C/C++ 2009. 1. 18. 14:201. Representation
[a] 분리된 idea로써 "it"을 생각할 수 있다면, 그것을 class로 만들어라
[b] 분리된 entity로써 "it"을 생각할 수 있다면, 그것을 어떤 클래스의 object로 만들어라
[c] 두 개의 클래스가 공통 인터페이스를 가지고 있다면, 그 인터페이스를 추상 클래스(abstract class)로 만들어라
[d] 두개의 클래스의 구현이 현저히 의미있는 공통성을 가지고 있다면, 공통된 부분을 기초 클래스(base class)로 만들어라
[e] 어떤 클래스가 객체의 컨테이너라면, 그것을 템플릿(template)로 만들어라
[f] 만약 함수가 컨테이너를 위한 알고리즘을 구현한다면, 그것을 컨네이너 패밀리의 알고리즘을 구현하는 템플릿 함수로 만들어라.
[g] 만약 클래스셋, 템플릿등이 논리적으로 연관되어 있다면 그것들을 common namespace에 위치시켜라.
2. Class definition
[a] 전역 데이타를 사용하지 말아라(member를 사용)
[b] 전역 함수를 사용하지 말아라
[c] public 데이터 멤버를 사용하지 말아라
[d] [a]나 [c]를 피하기 위해 friends를 사용하지 말아라
[e] 클래스에 "type filed"를 놓지 말아라, virtual function을 사용하라
[f] 중요한 최적화를 위해서를 제외하고는 inline 함수를 사용하지 말아라.
원문 : C++ Programming Laguage 3rd Edtion.