불필요하고 복잡한 것을 넣지 마세요.

-> 너같으면 넣겠냐? ( 넣는 애들 있음유 )

-> 최적화 해서 돌아가야 되는 코드에 디버그 코드 도배해서 오작동하게 만드는 애들


구체적인 것이 아닌 추상적인 것에 의존하세요

-> 재사용성을 높이고, 공통점을 찾아가는데 도움을 줍니다.


직접적인 친구와만 놀고, 친구의 친구와는 놀지마세요.

-> friend 도배하면 노출이 늘어납니다. 사생활을 보호하세요.


Singletone 패턴을 남용하지 말아주세요.

-> 싱글턴은 딱 필요한 몇 가지만 만들고, 그 내부에서 자원을 관리하는게 맞습니다.

-> 아니면 아예 통합 관리자를 따로 만들어야 하쥬.


무리하게 디자인 패턴을 적용하려 하지 말아주세요.

-> 난 디자인 패턴 따위 공부한적 없다네. 살다보면 패턴 쌓이는데 뭔 패턴

-> 남이 이거다 저거다 하는거 무분별하게 받아들이지 마세유.


클래스의 역할과 책임에 관해서 생각해주세요.

-> behavior 와 duty.

-> 책임이 명확해야 개고생안합니다. 코드는 여러분과 똑같은 생물체 입니다.


1개의 클래스에 너무 많은 일을 주지 않게 설계하세요.

-> 같은 소리 왜 자꾸 반복해


중재자를 사용해 의존 관계를 단순화하세요.

-> 라우터가 있으면 편합니다.

-> 컴파일 속도도 빠르게 할 수 있쥬.

-> 나중에 객체의 책임 범위가 늘어나거나 수정될 때 방화벽으로 작용해줍니다.


외부와의 인터페이스 부분을 클래스화하세요.

-> 라지만 DLL 로 뺄때는 클래스가 좆같아 져서

-> 함수로 클래스를 인터페이스 해야하는 사태가 벌어질때도 있습니다.

-> 어쨌든 한 번 싸주면 좋습니다.


객체생성도 매우 중요한 역할이랍니다.

-> 생성자 소멸자 의 역할은 아주 아주 큽니다. 뭐 당연한 소릴 하네.


전용 클래스와 범용 클래스를 명확하게 구분해주세요.

-> final 같은걸로 더이상 상속 못하게 한다든지,

-> 헤더에 모두 공개할게 아니라 cpp 안에 숨기든지,

-> 네이밍으로 너 건들지 마셈 을 표현해두면 좋습니다.

-> 그만큼 소스코드를 이어받은 사람들이나, 나중에 까먹어버린 내가 볼때 헛손질을 줄일 수 있습니다.


책임을 제대로 이양해 주세요.

-> 사공이 많으면 배가 산으로 가죠.

-> 관리포인트는 철저하게 넘겨야 합니다.


클래스의 추상도는 캡슐화에 영향을 줍니다.

-> 얼마나 일반적인 큰 붓의 범위를 잘 잡았냐가 그림이 삐져나가지 않고,

-> 작은 붓 손질이 덜가게 만들어 줍니다.


항상 추상도 높은 인터페이스를 어떻게 생성할지 생각해보세요.

-> 필요하면 붓에 풀을 먹여야 합니다.

-> 고딕체 같은거 쓸때는 짱이거든요? 매직이나 플러스펜 처럼


추상 인터페이스로 소결합을 유도하세요.

-> 추상 클래스와 인터페이스를 잘 만드는게 OOP 의 핵심임다. 큰 붓 잘 만들기 니까유.


추상 인터페이스 대신에 std:function을 사용해 보세요.

-> 가상함수보다 함수포인터가 구현도 활용도 편할때가 많슴다~

-> 거기다 콜백으로 쓰이면 흐름이 무척 단순화 되는 경우가 많죠.

-> 이벤트 드리븐!


객체가 처음부터 완전환 상태로 생성되게 해주세요.

-> 재사용성이 높아지는 비결입니다.

-> 기능 단위가 분해되어서 여기 저기 자식들 친척들 다 생성되어야 돌아가면 뭐 쓰레기쥬.


실행 순서를 보장할 수 있게 설계해주세요.

-> 싱글턴 문제와 겹치는 부분도 있는데, 아주 중요합니다.

-> 모듈별 전역 타입들은 솔직히 프로젝트 구성만 좀 바뀌어도 언제 실행될지 알 수 없으니까유.


생성자와 소멸자로 리소스를 관리해주세요.

-> 왜 당연한 소릴 하냐. 내가 죽는데 내 주둥아리와 팔이 살아있으면 웃긴거지.


구현 방법을 은폐하는 이름을 붙여 주세요.

-> 너무 구체적일 필요없이 잘 포괄하는 네이밍이 필요합니다~