1. 클래스의 특성

* 캡슐화 - 객체가 정해진 인터페이스만 공개하고 객체 내부의 상태와 상세한 구현 사항을 숨기는 것을 캡슐화라고 한다.


* 상속 - 어떤 클래스가 이미 존재하는 클래스를 확장하는 것을 상속한다고 말한다.

(상속은 두 클래스 사이에 is-a 관계를 말한다.)


* 다형성(폴리모피즘)

 - 프로그래밍 언어에서 서로 다른 타입의 객체들을 하나의 공통 인터페이스로 다룰 수 있는 기능이다.


* 합성과 집합

 - 상속만 사용할 것이 아니라 클래스 간의 관계를 has-a, uses-a 관계를 형성해서 복잡한 상속 관계를 만들지 않고 문제를 해결하는 것이 좋다.


* 디자인 패턴

(GOF를 보고 정리하자..)


2. 코딩규칙

* 인터페이스를 중시할 것 - 간결하고 단순하며 최소한의 것만 포함해야 한다

(이해하기 쉽고, 주석을 잘 달아야한다.)


* 이름을 잘 지을 것 클래스나 함수, 변수의 목적에 맞는 가장 직관적인 이름을 지어야 한다.


* 전역 네임스페이스를 깔끔하게 유지할 것

  - 네임스페이스나 이름에 붙이는 접두사 등을 사용해 이름이 다른 라이브러리의 이름과 충돌하지 않게 해야 한다.

#define문을 이용해 이름을 정의하는데 주의가 필요하다.

(C++ 전처리기는 단순히 텍스트를 바꿔 칠 뿐이라서 C/C++의 범위나 네임스페이스를 깡그리 무시하기 때문이다.)


* 널리 알려진 C++ 사용법을 따를 것


* 코딩규칙은 일관되야 한다.

  - 코드를 처음부터 짠다면 일관된 규칙을 두고 짜고, 코드를 고친다면 코드의 규칙을 지켜가면서 수정하자.


* 오류를 스스로 드러내는 코드를 작성하라

  - 흔히 저지를 수 있는 프로그래밍 오류를 쉽게 볼 수 있도록 해주는 코드가 좋은 코드이다.




'게임 엔진 아키텍처 > 3장 엔지니어링 기초' 카테고리의 다른 글

객체 메모리  (0) 2016.05.24
C/C++ 메모리 구조  (1) 2016.05.24
선언, 정의, 연결성  (0) 2016.05.24
멀티바이트 데이터와 엔디언  (1) 2016.05.24
수의 표현  (0) 2016.05.24
posted by 알쿠미