본문 바로가기
C++ 200제/코딩 IT 정보

[MFC 가이드] 코딩 표준 방법 5개, 함수 초기화, 변수, if문 등

by vicddory 2018. 10. 2.

MFC 가이드, 코딩 표준 방법 3가지 (함수, 초기화, 반환, 변수, if문)


MFC로 코딩하는 C++ 개발자분들이 보셔야할 표준 코딩 방법입니다. 큰 주제로 3가지, 기타 분류로는 십여가지가 있으니 천천히 가이드를 읽어보세요. 




함수의 중간에서 리턴값을 보내지 마세요


함수의 중간에서 다른 코드의 로직으로 "점프"하도록 구성하면 코드를 이해하고 수정하는게 힘들어집니다. 항상 함수는 처음부터 끝까지 구동하는게 좋고 그렇지 않을 경우엔 함수 자체를 정리해야 합니다. (기능별 분할)


선언과 초기화


단 한번만 정의하면 되거나 정의된 이후 값이 변경되지 않는다면 const를 사용하세요.


MFC 선언과 초기화[프로그래머 표준 코딩 방법] MFC 선언과 초기화


은닉 변수(Shadow Variable)를 사용하지 마세요


아래는 너무나도 어처구니 없는 코드입니다. MFC 가이드에서 따로 소개할 필요가 있을까요?


은닉 변수Shadow Variable 사용하지 않기[프로그래머 표준 코딩 방법] 은닉 변수Shadow Variable 사용하지 않기



Other


- 프로젝트 내부의 모든 CPP 파일에 아래 코드를 넣어보세요. 『(stdafx.h 파일에 넣는 것도 좋습니다)


1
2
3
4
5
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static const char THIS_FILE[] = __FILE__;
#endif
cs


- 너무 많은 인라인/__fastcall 함수를 사용하지 마세요.

경우에 따라 응용 프로그램의 구동을 빠르게 도와주긴 하지만, 너무 많으면 그 반대가 됩니다. 그리고 인터페이스로 분리하기 어려워 헤더 파일에  정의해야해서 느슨한 결합을 시키기 어렵습니다. 


- 이미 정의된 것들을 무리하게 재정의 하지 마세요.

표준 C++/MFC/ATL 라이브러리를 더 좋게 수정할 수 있다는 생각은 무모합니다.


- 문서화하세요. 변수/클래스/함수 이름과 남들이 이해 할 수 있는 내용들도 적으세요. MFC 가이드처럼 문서를 만드세요.


- 클래스에 Enum을 삽입할 수 있습니다.


[MFC 가이드] 코딩 표준 방법 5개, 함수 초기화, 반환, 변수, if문


- 변경되지 않는 변수나 내부적으로 매개변수를 수정하지 않는 함수에선 const를 사용합니다.

루프문에서도 매개변수가 변경되지 않는다면 const를 사용합니다.


1
int NumberOfCPUs() const;
cs


- 유지보수, 가독성, 효율적인 코딩을 위한 네이밍 때문에 고민하세요!


- 포인터나 매개 변수만을 참조하는 클래스엔 헤더 파일을 include하지 말고 클래스 선언으로 대체합니다.

이는 코드 종속성을 피할 수 있는 방법입니다.


- 깊은, 중복 코드는 피하세요. MFC 가이드가 아니어도 프로그래머라면 누구나 아는 겁니다.


- 다중 상속(Multiple Inheritance)은 많은 문제점을 안고 있으니 피하세요.


- 배열 삭제 시 [], 배열 이외엔[] 


1
2
delete [] array;
delete notarray;
cs


- 파생된 개체의 배열에 접근하고 다형성을 확보하려면 클래스 포인터를 사용하지 마세요.

- 일반적으로 클래스는 다음과 같은 선언부를 포함해야 합니다.

기본 생성자, 복사 생성자, 대입 연산자(assignment operator), 소멸자(가상)


- 대입연산자와 복사 생성자를 선언합니다.


대입연산자와 복사 생성자를 선언[프로그래머 표준 코딩 방법] 대입연산자와 복사 생성자를 선언


- Switch문에는 항상 default도 정의합니다.

기본적인 구문에서 동작하지 못하면 Default로 분기되어 예외 처리를 할 수 있습니다. break도 잊지 마세요! MFC 가이드에만 있는 내용이 아니랍니다!


Switch문에는 항상 default도 정의[프로그래머 표준 코딩 방법] Switch문에는 항상 default도 정의


- 코드의 양 보단 질을 따지세요. 그리고, 미래를 생각해 확장성을 감안해 제작하세요.


- 항상 문서를 참조하세요!




함수를 안전하게 구현하는 방법 12가지


  1. 호출한 프로그램에 정보 및 에러를 알려주기 위해 리턴값을 사용
  2. 함수 내부에서 프로그램을 종료시키지 않는다. 그 대신 호출한 프로그램이 유연성 있게 에러를 다룰 수 있도록 에러값을 리턴한다
  3. 함수를 범용적이면서도 쓰기 쉽게 만든다
  4. 버퍼의 크기에 대하여 불필요한 가정을 하지 말라
  5. 제한을 두어야 할 때 다른 임의의 상수보다 시스템에 정의된 표준 제한을 사용해라.
  6. 가능하면 표준 라이브러리 함수를 써라.
  7. 입력 매개변수의 값을 바꾸는 것이 정말 의미가 있지 않다면, 입력 매개 변수의 값을 변경하지 말라
  8. 자동할당으로 충분하다면, 정적 변수나 동적 메모리 할당을 사용하지 마라
  9. Malloc()류의 함수로 할당된 메모리는 모두 해제되었는지 살펴보아라
  10. 함수가 재귀적으로 쓰였는지, 시그널 핸들러에서 쓰였는지, 쓰레드에서 쓰였는지 잘 살펴보아라. 정적 저장 클래스의 변수를 사용하는 함수는 원하던 대로 실행되지 않을 수 있다.
  11. 시그널에 의해 인터럽트 될 때의 결과를 분석하라.
  12. 전체 프로그램을 어떻게 종료시킬 것인지에 대해 신중히 생각해라.


출처 - mds 테크놀로지 교육 자료 중 일부입니다.

MFC 가이드, 코딩 표준 방법 3가지 (함수, 초기화, 반환, 변수, if문)

댓글