#1. [레거시 C++ 가이드] 주요 구성 요소 미리보기
C++ 의 주요 구성 요소는 하기와 같습니다.
C++ 의 주요 구성 요소는 하기와 같습니다.
밑줄로 시작하지 말고, 이중 밑줄을 사용하지 마라. 헝가리안 표기법을 사용하지 마라. 매크로는 대문자로 작성하라. 이름을 반복하지 마라.
타입 크기에 의존하여 코딩하지 마라. OS에 따라, 컴파일러에 따라, 시스템 비트수에 따라 크기가 달라질 수 있다. 대소 비교가 필요한 경우에는 정수 타입을 사용하라. 실수 비교는 오차가 있다.
이름의 유효 범위는 짧게 유지하라. 중괄호({}) 블록으로 짧게 만들 수 있다.
이름 충돌을 피하기 위해 복잡한 접두어를 쓰지 말고, 네임스페이스를 사용하라. using 선언과 using 지시문 사용시 유효 범위가 커지지 않도록 주의하라.(전역 공간에 using namespace를 사용하면 망한다.)
BOOL보다는 bool을 사용하라.
포인터 보다는 참조자를 사용하라.(널검사가 필요없다.) 지역 변수의 참조자를 리턴하지 마라.(이미 소멸된 개체다.)
속도 성능에 영향이 없다면 유지보수시 확장성을 위하여 배열보다는 vector를 사용하라. 동적 요소 할당을 지원하며, 여전히 엑세스는 빠르다. new[]-delete[] 쌍을 준수하라.
5대 원칙(SOLID)정도는 사전에 숙지하고 구조체/클래스/공용체를 만들어라. 구조체와 클래스의 차이는 초기화 방법과 기본 접근 지정자(구조체는 public, 클래스는 private) 뿐이다. 공용체는 플랫폼에 따라, 컴파일러에 따라, 최적화 옵션에 따...
열거형은 클래스나 네임스페이스내에 정의하여 이름 유효 범위를 축소하라.
const 정확성을 지켜라. 무조건 const를 들이대라. 상수 개체와 상수 멤버 함수는 메모리를 수정하지 않기 때문에 예외가 발생하지 않는다.
변수의 수명(유효 범위)은 짧을 수록 좋다. 최대한 임시 개체나 지역 변수로 사용하라. 전역 변수나 정적 전역 변수 보다는 함수내 정적 지역 변수를 사용하라. 컴파일러 최적화가 쉽도록 임시 개체를 사용하라.
힙에 동적으로 메모리에 할당한 것은 명시적으로 소멸시켜라. 스택에 생성된 변수는 유효 범위가 종료되면 자동 소멸 된다.
생성하면서 초기화 하라. 초기화되지 않은 변수를 사용하지 마라. 자동 제로 초기화에 의존하지 마라. 낭패볼 수 있다.
문자열 상수를 많이 만들면, 프로그램 용량이 커진다. 비슷한 문장을 쓸데없이 여러개 작성하지 마라.
암시적 형변환은 실수하기 쉽게 만든다. 명시적으로 형변환하라. bool 형변환 연산자 정의는 하지 마라. 나아가 모든 타입의 형변환 연산자 정의를 하지 마라. 뜻하지 않게 몰래 암시적 형변환한다. 인자가 1개인 값 생성자는 explicit로 암시적 형변...
수정될 필요가 없는 문자열 데이터는 const char* 나 const wchar_t*로 관리하라.(배열이나 string, wstring을 쓰면 복제된다.) 멀티 바이트 문자열은 권장하지 않는다. 사용하지 마라. 소스 코드 저장시에는 다국어 처리에 적합...
임시 개체가 생성되지 않도록 이항 산술 연산자(a = a + b)보다는 산술형 대입 연산자(a += b)를 사용하라. 후위형 증감 연산자는 헷갈리고, 쓸데없는 임시 개체가 생성되니 사용하지 마라. 비교 연산 오버로딩은 <을 활용해서 구현하라.
코드 분석을 위해 제어의 중첩을 최소화 하라.(조건 상태표를 활용하라.) 예외에 안전할 수 있도록 사전 조건 검사를 수행하라. goto는 코드 분석을 방해하니 사용하지 마라.
동적 예외 사양을 사용하지 마라. 함수 포인터 대신 함수자 나 Strategy 패턴을 이용하라. 멤버 개체의 참조가 아니라면, 컴파일러 최적화가 쉽도록, 리턴값 최적화가 가능하도록, 리턴값은 값 타입으로 리턴하라. 다형적인 가상 함수에서 부모 개...
inline은 요청일 뿐이다. 컴파일러가 인라인화를 판단한다.
매크로 상수를 쓰지 말고 열거형 상수를 사용하라. 매크로로 타입의 별칭을 만들지 말고 typedef를 사용하라. 매크로 함수를 쓰지 말고 인라인 함수를 사용하라.
헤더 파일에서 다른 헤더 파일을 #include하는 것은 최소화 하라. 선언과 정의 분리, 전방 선언으로 컴파일 종속성을 최소화 하라.