1.7.4 자바 프로그래머를 위한 권고 사항
C++와 자바는 유사한 문법을 가졌지만 꽤나 다른 언어다. 이 둘의 목적은 상당히 다르며, 그들의 응용 역시 상당 부분 다르다. 후계자란 단어를 전임자와 똑같은 일을 더 잘할 수 있고 추가로 더 많은 것을 할 수 있는 의미로 본다면 자바는 C++의 직접적인 후게자라고 볼 수 없다. C++를 잘 활용하기 위해서는 C++로 자바를 짜려고 노력할 것이 아니라 C++에 적합한 프로그래밍과 설계기법을 채택해야 한다. 이는 가비지 컬렉터가 존재하리란 보장이 없기 때문에 new로 생성한 객체를 반드시 delete해야 하는 것을 잊지 말아야 한다는 이슈 같은 것만은 아니다.
[1] C++로 자바 스타일을 단순 흉내내지 말기 바란다. 그렇게 하면 유지 보수성과 성능 측면에서 상당히 좋지 않은 경우가 많다.
[2] C++ 추상화 매커니즘(클래스와 템플릿 등)을 이용한다. 낯설다는 느낌이 들어서 C 프로그래밍 스타일로 후퇴하면 안 된다.
[3] C++ 표준 라이브러리를 새로운 기법과 프로그래밍 스타일의 표본으로 활용하기 바란다.
[4] 자신의 모든 클래스에 대한 고유의 기본 클래스(object 클래스)를 즉흥적으로 만들지 않는다. 대개는 그것이 없어도 대부분 상당수 클래스에 잘 대처할 수 있다.
[5] 참조자와 포인터 변수의 활용을 최소화한다. 지역 변수와 맴버 변수로 활용한다. (3.2.1절, 5.2절, 16.3.4절, 17.1절)
[6] 변수는 암시적으로 참조자가 될 수 없다는 점을 명심한다.
[7] 포인터를 C++에서 자바 참조자와 같은 것이라고 생각한다. (C++의 참조자는 좀 더 제한적이다.)
[8] 함수는 자동으로 virtual이 되지는 않는다. 모든 클래스가 상속되지는 않는다.
[9] 추상 클래스를 클래스 계층 구조에 대한 인터페이스로 활용한다. '불확실한 기본 클래스', 즉 데이터 맴버를 가진 기본 클래스는 사용하지 않는다.
[10] 가능한 경우에는 언제나 유효 범위를 가진 자원 관리를 사용한다.
("자원 획득은 초기화다 RAII, Resource Acquisition is Initializtaion")
[11] 생성자를 이용해서 클래스 불변속성을 극복한다 (그리고 그렇게 할 수 없다면 예외를 던진다)
[12] 객체가 소멸될 때(예를 들어 유효 범위를 벗어날 때) 정리 작업이 필요하다면 해당하는 소멸자를 이용한다. finally를 흉내 내지 않는다. (그렇게 하는 건 더 즉흥적이고, 결국에는 소멸자를 이용할 때보다 휠씬 더 많은 손이 갈 것이다.)
[13] '무방비'로 new와 delete를 사용하지 않는다. 대신, 컨테이너(vector, string, map 등)와 핸들 클래스(lock과 unique_ptr 등)를 이용한다.
[14] 자립적인 함수(맴버가 아닌 함수)를 이용하고, 네임스페이스(2.4.2절, 14장)를 이용해서 자립적인 함수의 유효 범위를 제한한다.]
[15] 예외 지정을 사용하지 않는다. (noexception를 제외하고, 13.5.1.1절)
[16] C++ 중첩 클래스는 자신을 포함하고 있는 클래스의 객체에 접근하지 못한다.
[17] C++ dynamic_cast와 typeid(22장)로 가장 최소한의 런타임 리플렉션 run-time reflection만을 제공한다. 컴파일 타임 기능에 좀 더 많이 의존한다 (예를 들어 컴파일 타임 다형성, 27장, 20장) 이런 충고 대부분은 C# 프로그래머에게도 똑같이 적용된다.
-<The C++ Programming language fourth edition> 44~45p
'유희지왕 > 개발단상' 카테고리의 다른 글
인디게임 서버 개발 유용한 자료 (0) | 2018.01.08 |
---|---|
[연구] 인공지능을 활용한 이미지 품질 개선 (0) | 2017.12.01 |
[언리얼] 언리얼엔진4 개발 사양(스펙) (0) | 2017.08.24 |
[자료] 서버프로그래머를 위한 공부 자료 (0) | 2017.08.23 |
[컴퓨터공학] 언어를 창시한 사람들의 책 (창시자의 책) (0) | 2017.08.04 |
[컴퓨터공학] Jolt상 수상작 정리 2008 ~ 2014 (0) | 2017.07.14 |
그림자 노동 (0) | 2017.06.15 |
무료 폰트 사이트 (0) | 2017.06.15 |
댓글