사용자 도구

사이트 도구


kb:maintainablecodecodingstyle

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

kb:maintainablecodecodingstyle [2014/11/08 16:50] (현재)
줄 1: 줄 1:
 +====== Maintainable Code / Coding Style ======
 +코딩 스타일과 관련된 사항
 +
 +====== 목록 ======
 +==== - 로컬 변수는 필요한 만큼만 선언하자 ====
 +쓸데 없는 로컬 변수를 남겨두면,​ 다른 사람에게 혼란을 준다.
 +
 +==== - 캐릭터 변수를 여러 가지 포맷으로 사용하지 말자 ====
 +<​nowiki>''</​nowiki>,​ 0x20, 040. 이런 식으로 사용하면 좋지 않다.
 +
 +==== - 캐스팅을 줄이자 ====
 +특히나 void* 형식으로 데이터를 넘긴 다음에 캐스팅하는 것은 위험하기도 하거니와,​ 코드를 보기 어렵게 만든다.
 +
 +==== - 스위치 안에 스위치를 쓰지 말자 ====
 +사람이 이해하기 어렵다.
 +
 +==== - 묵시적인 변수 타입 변환을 이용하지 말자 ====
 + 
 +==== - 뭔가 의미가 있는 정수는 따로 정의한 다음에 사용하자 ====
 +<code cpp>
 +switch (menu)
 +{
 +    case 1:
 +    ...
 +    case 2:
 +    ...
 +}
 +</​code>​
 +<code cpp>
 +const int COPY = 1;
 +const int PASTE = 2;
 +switch (menu)
 +{
 +    case COPY:
 +    ...
 +    case PASTE:
 +    ...
 +}
 +</​code>​
 +
 +==== - 코드 안에서 8진수를 사용하지 마자 ====
 + 
 +==== - 너무 단계가 많은 네스팅은 외부로 빼내자 ====
 +<code cpp>
 +if (a)
 +{
 +    if (b)
 +    {
 +        if (c)
 +        {
 +            good();
 +        }
 +        else
 +        {
 +            error3();
 +        }
 +    }
 +    else
 +    {
 +        error2();
 +    }
 +}
 +else
 +{
 +    error1();
 +}
 +</​code>​
 +
 +위와 같은 코드는 다음과 같이 만드는 것이 훨씬 보기 쉽다.
 +
 +<code cpp>
 +if (!a)
 +{
 +    error1();
 +    return;
 +}
 +
 +if (!b)
 +{
 +    error2();
 +    return;
 +}
 +
 +if (!c)
 +{
 +    error3();
 +    return;
 +}
 +
 +good();
 +</​code>​
 +:!: 위의 예 같은 경우에는 예외처리도 좋은 해결 방안이 되겠다.
 +
 +==== - 한 라인 안에다 너무 많은 내용을 집어넣지 말자 ====
 +가로 스크롤은 힘들다.
 +
 +==== - 함수 헤더 선언시, 함수 내부에서 취급하지도 않는 예외를 throw 목록에 선언하지 말자 ====
 +
 +==== - 뻔히 발생할 수 있는 사건에 대해 예외 처리 기능을 사용하지 말자 ====
 +
 +==== - 트릭에 빠져들지 말자 ====
 +<code cpp>
 +a=a++; ​
 +f(a++,​a++); ​
 +</​code>​
 + <​code>​
 +*++b ? (*++b + *(b-1)) : 0
 +</​code>​
 +
 +==== - if 구문 다음에 괄호 붙이기를 생활화하자 ====
 +음... 개인적으로 뼈아픈 내용이다. 옛날에 if 구문 뒤에다 괄호를 안 붙였다가,​ 돈 복사 버그를 만들어 내어 빽섭한 적이 있다. 일부러 그러는 사람이야 없겠지만,​ 들여쓰기마저 이상하게 하는 경우, 상당히 짜증나는 코드를 만들 수 있다.
 +<code cpp>
 +if ( a )
 +   if ( b ) x=y;
 +else x=z;
 +</​code>​
 +//대충 이런 식이였던 듯 한데...// :(
 +
 +==== - 탭 사용은 될 수 있는 한 줄이자 ====
 +왜 파이썬에 강제 들여쓰기가 있겠는가. 원래 여러 사람이 코드를 보려면 들여쓰기는 스페이스로 하는 게 정석이다. 하지만 매번 스페이스바 누르기가 귀찮다면,​ 최소한 프로그램 팀 안에서는 탭 사이즈를 1가지로 정해두고 사용해라. 이 사람은 2 탭, 저 사람은 4 탭, 이 따위로 하면 코드 정말 보기 어려워진다.
 +
 +또한 문자열 선언 안에다 탭 캐릭터를 쓰면 좋지 않다. "​\t"​를 사용해라.
 +
 +==== - 너무 복잡한 매크로를 선언하지 말자 ====
 +특히 중첩된 매크로를 여러 헤더 파일에다 분리해서 선언하는 경우, 매우 괴롭다.
 +
 +==== - 하나의 화면에다 될 수 있는 한 많은 것을 보여줄 수 있도록 하자 ====
 +주석 잘 다는 것은 좋은데, 다음과 같은 정도의 주석이 함수마다 존재하는 코드가 있다면 과연 보기 쉬울까?
 +<code cpp>
 +/* 
 +/* 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: ​
 +*/ 
 +</​code>​
 +
 +----
 +  * see also [[MaintainableCode]]
  
kb/maintainablecodecodingstyle.txt · 마지막으로 수정됨: 2014/11/08 16:50 (바깥 편집)