1. Design Style

5. Give one entity one cohesive responsibility.

한 번에 하나에 집중해라. 각 객체 (변수, 클래스, 함수, 네임스페이스, 모듈, 라이브러리)에 하나의 잘 정의된 책임을 부여하라. 객체가 자랄 수록 그 책임의 범위는 자연스럽게 증가하지만 책임은 발산해선 안 된다.

6. Correctness, simplicity, and clarity come first.

단순한 소프트웨어를 유지하라. 정확성은 빠른 것보다 낫다. 단순한 것은 복잡한 것보다 낫다. 깔끔한 것은 귀여운 것보다 낫다. 안전한 것은 불안전한 것보다 낫다.

7. Know when and how to code for scalability.

폭발적 데이터 증가에 조심하라. 섣부른 최적화를 하지 말고 최적의 복잡도에 주목하라. 사용자 데이터에 동작하는 알고리즘은 예측 가능해야 하고 가능하면 처리하는 데이터의 크기에 대해 선형보다 나쁘지 않아야 한다. 최적화가 필요하고 중요한 때, 데이터 크기가 커짐으로 인해 그렇다면, 하나의 덧셈을 절약하는 미세 최적화 대신 빅-오 복잡도 개선에 집중하라.

8. Don’t optimize prematurely.

섣부른 최적화는 중독성이 있으며 비생산적이다. 최적화의 첫 번째 규칙은 : 하지 마라. 두 번째 규칙은 (전문가 한정) : 아직 하지 마라. 두 번 측정하고 한 번 최적화하라.

9. Don’t pessimize prematurely.

스스로 쉽게 하고, 코드에도 쉽게 하라. 다른 모든 것이 같다면 (특히 코드 복잡도와 가독성), 특정 효율적 디자인 패턴과 코딩 습관은 손가락으로부터 자연스럽게 나와야 하고 불편한 대안보다 우선되어야 한다. 이것은 섣부른 최적화가 아니다. 쓸데없는 비관을 막는 것이다.

10. Minimize global and shared data.

공유는 경합을 야기한다. 공유 데이터를 피하라. 특히 전역 데이터. 공유 데이터는 결합을 증가시키고 유지보수성을 떨어트리고 종종 성능도 떨어트린다.

11. Hide information.

추상화를 제공하는 객체의 정보를 노출하지 말라.

12. Know when and how to code for concurrency.

안전하게 스레드하라. 복수의 스레드나 프로세스를 쓴다면, 오브젝트 공유를 최소화하고 적절한 것을 안전하게 공유하라.

13. Ensure resources are owned by objects. Use explicit RAII and smart pointers.

강력한 도구가 있을 때 맨손으로 작업하지 말라. C++의 자원 획득은 곧 초기화(RAII) 관용은 올바른 자원 관리의 강력한 도구이다. RAII는 컴파일러에게 강하고 자동화된 보장을 한다. 다른 언어에서는 손으로 코딩되는 허약한 관용구에 의존하지만. 날것의 자원을 할당할 때는 그를 소유하는 오브젝트로 즉시 전달하라. 절대 한 명령문에서 둘 이상의 자원을 할당하지 말라.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중