사용자 도구

사이트 도구


kb:maintainablecodecodingstyle

Maintainable Code / Coding Style

코딩 스타일과 관련된 사항

목록

1. 로컬 변수는 필요한 만큼만 선언하자

쓸데 없는 로컬 변수를 남겨두면, 다른 사람에게 혼란을 준다.

2. 캐릭터 변수를 여러 가지 포맷으로 사용하지 말자

'', 0x20, 040. 이런 식으로 사용하면 좋지 않다.

3. 캐스팅을 줄이자

특히나 void* 형식으로 데이터를 넘긴 다음에 캐스팅하는 것은 위험하기도 하거니와, 코드를 보기 어렵게 만든다.

4. 스위치 안에 스위치를 쓰지 말자

사람이 이해하기 어렵다.

5. 묵시적인 변수 타입 변환을 이용하지 말자

6. 뭔가 의미가 있는 정수는 따로 정의한 다음에 사용하자

switch (menu)
{
    case 1:
    ...
    case 2:
    ...
}
const int COPY = 1;
const int PASTE = 2;
switch (menu)
{
    case COPY:
    ...
    case PASTE:
    ...
}

7. 코드 안에서 8진수를 사용하지 마자

8. 너무 단계가 많은 네스팅은 외부로 빼내자

if (a)
{
    if (b)
    {
        if (c)
        {
            good();
        }
        else
        {
            error3();
        }
    }
    else
    {
        error2();
    }
}
else
{
    error1();
}

위와 같은 코드는 다음과 같이 만드는 것이 훨씬 보기 쉽다.

if (!a)
{
    error1();
    return;
}
 
if (!b)
{
    error2();
    return;
}
 
if (!c)
{
    error3();
    return;
}
 
good();

:!: 위의 예 같은 경우에는 예외처리도 좋은 해결 방안이 되겠다.

9. 한 라인 안에다 너무 많은 내용을 집어넣지 말자

가로 스크롤은 힘들다.

10. 함수 헤더 선언시, 함수 내부에서 취급하지도 않는 예외를 throw 목록에 선언하지 말자

11. 뻔히 발생할 수 있는 사건에 대해 예외 처리 기능을 사용하지 말자

12. 트릭에 빠져들지 말자

a=a++; 
f(a++,a++); 
*++b ? (*++b + *(b-1)) : 0

13. if 구문 다음에 괄호 붙이기를 생활화하자

음… 개인적으로 뼈아픈 내용이다. 옛날에 if 구문 뒤에다 괄호를 안 붙였다가, 돈 복사 버그를 만들어 내어 빽섭한 적이 있다. 일부러 그러는 사람이야 없겠지만, 들여쓰기마저 이상하게 하는 경우, 상당히 짜증나는 코드를 만들 수 있다.

if ( a )
   if ( b ) x=y;
else x=z;

대충 이런 식이였던 듯 한데… :(

14. 탭 사용은 될 수 있는 한 줄이자

왜 파이썬에 강제 들여쓰기가 있겠는가. 원래 여러 사람이 코드를 보려면 들여쓰기는 스페이스로 하는 게 정석이다. 하지만 매번 스페이스바 누르기가 귀찮다면, 최소한 프로그램 팀 안에서는 탭 사이즈를 1가지로 정해두고 사용해라. 이 사람은 2 탭, 저 사람은 4 탭, 이 따위로 하면 코드 정말 보기 어려워진다.

또한 문자열 선언 안에다 탭 캐릭터를 쓰면 좋지 않다. “\t”를 사용해라.

15. 너무 복잡한 매크로를 선언하지 말자

특히 중첩된 매크로를 여러 헤더 파일에다 분리해서 선언하는 경우, 매우 괴롭다.

16. 하나의 화면에다 될 수 있는 한 많은 것을 보여줄 수 있도록 하자

주석 잘 다는 것은 좋은데, 다음과 같은 정도의 주석이 함수마다 존재하는 코드가 있다면 과연 보기 쉬울까?

/* 
/* Procedure Name: 
/* 
/* Original procedure name: 
/* 
/* Author: 
/* 
/* Date of creation: 
/* 
/* Dates of modification: 
/* 
/* Modification authors: 
/* 
/* Original file name: 
/* 
/* Purpose: 
/* 
/* Intent: 
/* 
/* Designation: 
/* 
/* Classes used: 
/* 
/* Constants: 
/* 
/* Local variables: 
/* 
/* Parameters: 
/* 
/* Date of creation: 
/* 
/* Purpose: 
*/ 

kb/maintainablecodecodingstyle.txt · 마지막으로 수정됨: 2014/11/08 16:50 (바깥 편집)