프로그래밍 격언

 

일 반

 

- 자신의 프로그램에 많은 주석을 두어라. 그래야 다른 프로그래머에게 도움이 된다.

- “KISS(Keep It Simple, Stupid)”의 원칙을 사용하라. 간결함과 간략함은 복잡하고 이상한 것보다 낫다.

- 부작용을 피하라. 별도의 라인에서 ++과 --를 사용한다.

- 조건 내에 할당문을 두지 마라. 그 외 문의 내부에도 할당문을 두지 않는다.

- =와 ==의 차이를 알고 있어야 한다. =와 ==를 잘못 사용하면 에러를 찾기가 쉽지 않다.

- 아무 것도 하지 않은 상태로 두지 않는다.

// 다음과 같이 프로그래밍하지 마라

for (index = 0; data[index] < key; ++index);

// 세미콜론을 살펴보자

이럴 때는 다음과 같이 항상 주석을 넣는다.

for (index = 0; data[index] < key; ++index)

/* 아무 것도 하지 않는다. */;

- 습관은 기술과 창조성(예를 들어, 예술가나 운동선수)을 필요로 하는 전문 분야에 종사하는 사람에게 중요하다. 코딩도 마찬가지어서 이미 알고 있는 것을 계속 복습하여 좋은 코딩 습관을 만들도록 한다.

 

설 계

 

- 빠르고 간단한 방법과 일반적이고 유연성 있는 방법 사이에서 하나를 선택해야 한다면 언제나 유연성 있는 방법을 사용한다.

- 사용자가 정해진 형식대로 입력한다고 생각하지 마라. 고양이가 키보드 위를 걸어갔을 때 프로그램이 어떻게 될지도 생각할 수 있어야 한다.

- 부호가 있는 것과 부호가 없는 것의 변환과 오버/언더플로우 조건에 유의한다.

 

선 언

 

- 라인마다 하나의 변수 선언을 하고 주석을 단다.

- 쉽게 이해할 수 있게 긴 이름을 사용한다. 하지만 너무 긴 이름은 입력하기가 힘들 수 있다.

- 기본 return 선언문을 사용하지 않는다. 함수가 정수를 리턴하면 int 타입으로 선언한다.

 

switch문

 

- default의 경우에 아무 것도 하지 않더라도 항상 switch문에 default를 두도록 한다.

switch (expression) {

default:

/* 아무 것도 하지 않는다. */;

break;

}

- switch에서의 모든 case는 break나 /* fall through */ 문으로 끝난다.

 

전처리기

 

- #define로 정의되는 상수형 표현식에 ( )를 둔다.

#define BOX_SIZE (3 * 10) /* 상자의 크기(픽셀) */

- 파라미터가 있는 매크로 인자에는 ( )를 둔다.

#define SQUARE(x) ((x) * (x))

- 문장으로 이루어진 매크로는 중괄호로 둘러싼다.

// 심각한 에러가 발생했다. 사용자에게 알리고 프로그램을 강제 종료시킨다.

#define DIE(msg) {(void)printf(msg); exit(8);}

- 조건 컴파일에 #ifdef/#endif 구성을 사용할 때 프로그램의 맨 위 부분에 #define과 #undef문을 두고 주석을 단다.

- 가능하면 #define 대신에 const를 사용한다.

- 인라인 함수는 파라미터가 있는 매크로에서 사용하면 좋다.

 

스타일

 

- { }로 둘러싸인 블록 코드는 2페이지 이상 돼서는 안 된다. 더 큰 블록은 여러 개의 작고 간단한 프로시저로 나눈다.

- 코드가 바르게 동작하면 프로시저를 여러 개의 작고 간결한 프로시저로 나눈다.

- 클래스에 항상 생성자, 소멸자와 복사 생성자를 정의하라. C++의 기본값을 사용한다면 다음과 같이 루틴 안에 주석을 단다.

class example {

public:

// example -- 기본 생성자

 

컴파일

 

- 프로그램을 컴파일하는 방법을 알 수 있게 Makefile을 만들도록 한다.

- 컴파일 할 때 모든 경고 플래그를 On시켜 컴파일러가 발견할 수 있는 모든 문제를 찾아낸다.

 

C++ 프로그래머를 위한 10가지 명령 Phine Straite 만듦

 

1. 간단한 클래스라도 생성, 소멸, 복사 생성이나 할당에 대한 기본 조작을 컴파일러에게 의존하지 마라.

2. 다른 사람이 상속(파생)할 수 있게 소멸자를 가상으로 선언하고 정의하라.

3. 상속(파생) 메커니즘을 남용하여 "is-a" 규칙을 위반하지 마라.

4. 컴파일러, 운영체제나 하드웨어 환경의 구현 의존 동작에 의존하지 마라.

5. 심사숙고 없이 루트에 있는 최하위 클래스의 인터페이스를 확대하지 마라.

6. 비슷한 기능을 갖는 것에 friend 권한을 주지 마라.

7. 특별한 경우를 제외하고 데이터에 public이나 static을 사용하지 마라.

8. 객체 내에 있는 포인터나 참조를 숨기지 마라.

9. 가능하면 정확하게 클래스 라이브러리를 이용한다.

10. printf/scanf를 사용하지 마라.

  출처: C++ 프로그래밍의 이해(한빛미디어 - Steve Oualline)

'Software > Common sense' 카테고리의 다른 글

위도 경도  (0) 2018.03.26
Posted by 독뽀
,