변수 이름을 체계적으로 지어라

1. 변수 이름을 체계적으로 지어라.
2. 헝가리안 표기법으로 변수 이름을 지어라.
3. 변수의 자료형을 변수 이름에 접두사로 표기하라.
4. 기억 영역 계층을 접두사로 활용하라.
5. 함수의 역할을 접두사로 활용하라.
6. 자신만의 접두사를 만들어 활용하라.

7. 이름을 의미 있게 지어라.
8. 비슷한 변수 이름을 사용하지 마라.
9. 의미를 잃지 않는 범위에서 짧게 지어라.
10. 이름이 길면 밑줄 또는 대소문자를 구분하라.
11. 변수 이름을 밑줄로 시작하지 마라.
12. 대소문자를 적절히 배합해서 만들어라.
13. 대소문자를 구분한다는 것을 악용하지 마라.

변수의 자료형에 따라 붙이는 접두사

접두사 접두사가 지시하는 내용
a 배열
arr 배열
b bool형 변수
c character형 변수
d double형 변수
f float형 변수
fd 파일 기술자
fp 파일 포인터형 변수
h 핸들
i int형 변수
n int형 변수
p 포인터형 변수
pfn 함수에 대한 포인터
r 참조형 변수
s String형 변수
str CString형 변수
u 부호 없는 정수(U=unsigned int)형 변수
w word형 변수 = unsigned int형

예 : iNumber, iCounter i_number

변수의 기억 영역 계층과 접두사

접두사 접두사가 지시하는 내용
a 자동(auto) 변수
s 정적(static) 변수
g 전역(global) 변수
e 외부(external) 변수
r 레지스터(register) 변수

예 : int siMyNum; int riCounter;
global unsigned char g_ucMynum;
global unsigned char g_uc_mynum;

함수의 접두사를 활용한 예

함수 예 의미
GetNumber() ‘Get’으로 수를 얻기 위한 함수라는 것을 알 수 있다.
SetNumber() ‘Set’으로 수를 설정하는 함수라는 것을 알 수 있다.
MaxNumber() ‘Max’로 수치 중에 최대값을 얻는 함수라는 것을 알 수 있다.
PutNumber() ‘Put’으로 수를 저장하기 위한 함수라는 것을 알 수 있다.

프로그래머들 사이에서 관행적으로 쓰이는 접두사

접두사 지시하는 내용
Avr 평균값을 얻는다 AvrOfTot
Cnt 데이터의 개수를 얻는다 CntAllthing
Check 어떤 값을 검증한다. ChkData
Get 어떤 값을 얻어낸다. GetData
Set 어떤 값을 설정한다. SetData
Is 무엇인가에 대해서 묻는 역할을 한다. IsKey
Key 데이터 중에서 키 값만을 얻는다. KeyPaymentTable
Max 최대값을 얻는다. MaxOfNum
Mid 중간값을 얻는다. MidOfData
Min 최소값을 얻는다. MinOfArray

프로그래머들 사이에 관행적으로 쓰이는 축약어

어휘 축약어
function func
number num
day d 또는 dd
month m 또는 mm
year y 또는 yy
temporary temp
terminate end
terminal term

대소문자를 구분하여 이름을 짖는 프로그래머의 관행
1. 변수나 객체의 이름은 소문자를 시작한다.
2. 함수, 클래스, 구조형, 공용형 등의 이름은 대문자로 시작한다. (메소드 포함).
3. 기호 상수나 매크로 함수는 모든 글자를 대문자로만 짓는다.

주석을 작성할 때 좋은 코딩 습관

프로그램의 앞부분에 머리 주석을 반드시 달아라
잘 만들어진 주석의 예
/*****************************************************************************/
/* 파일명 : newaccnt.c
/* 작성자 : 1. 출처 :
www.gnu.org의 logcount.c
/* 2. 작성 : 소프트웨어 개발 2팀 아무개
/* 목적 : 사용자 로그 기록을 읽어들여
/* 콜 센터에 제공할 통계를 작성한다.
/* 사용방식 : 매일 한번씩 운영체제에 작성한
/* 스케줄러 프로그램 sched.exe에 의해서 자동으로 실행된다.
/* 이 프로그램을 컴파일하여 만든 실행 파일인 newaccnt.exe는
/* 반드시 sched.exe와 같은 디렉토리에 있어야 한다.
/* 사용파일 : userlog.dat를 읽기모도(r)로 읽어 통계를 낸 후에
/* useracnt.dat에 갱신 모드 (w)로 통계를 기록한다.
/* 제한사항 : 1. userlog.dat이 사전에 반드시 먼저 작성되어 있어야 한다.
/* 만약, 작성되어 있지 않다면 logcount.exe 파일이 제대로 작동하는지 점검한다.
/* 2. 이 프로그램은 반드시 새벽 2시 이후에 작동되어야 한다.
/* 만약 스케줄러 프로그램인 sched.c를 수정하는 경우에 이 시간을 고치지 말것.
/* 오류처리 : 1. 각종 오류가 발생한 경우에 오류 로그파일을
/* errlog.dat로 작성하고 바로 종료한다.
/* 이력사항 : 1. 2002년 3월 10일 최초 작성
/* 2. 2002년 6월 5일 스케줄러 프로그램과 연동되도록 수정
/*****************************************************************************/

/************** 이력사항 *****************************************/
/* v 1.0, 1990.10.1, 통신연구소, 아무개, 최초의 통신모듈을 작성하다.
/* v 1.1, 1990.11.1, 통신연구소, 아무개, callprooc()를 개선하여 속도를 높이다.
/****************************************************************/

다양한 주석의 형태
/* 한 줄 주석은 프로그램의 본문 주석에 많이 사용된다. */
/* –>주의 : 오류 메시지 처리 확인 요망 <–*/
/*>>>>>>>>>>>>> 정밀 계산 루틴 <<<<<<<<<<<<<*/
/*
* 여러 줄에 걸친 주석을 이런 식으로 작성할 수 있다.
* 이런 꼴의 주석은 특별히 강조할 사항은 아니지만
* 긴 문장으로 장황하게 설명하여야 할 때 사용한다.
*/

/*
* 이 모듈은 입력값을 검증한다.
* —————————————————————–
* 줄을 만들어 주석내용을 구분하기도 한다.
*
*/

/********************************************************/
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 경고 (Warning) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
/********************************************************/
/* 이 프로그림은 특별히 주의를 요한다. 열차의 제어
/* 모듈이기 때문이다. 모든 수치를 정밀하게 검증할
/* 필요가 있으면 수십 차려 이상 테스트해야 한다.
/********************************************************/

/*****************************************/
/******************************************
/**** 주의사항 : 절대로 이 프로그램에서는 ******
/**** 부동 소수점 연산을 하여 근사치를 ******
/**** 사용하면 안된다. 반드시 정수형면수만******
/**** 사용하라. 형 변환이 일어나서도 안된다*****
/******************************************
/*****************************************/

한 줄 주석과 주석 상자를 구분하라.

변수 사전 작성요 주석을 달아라
int area; /* 면적 : 지금 시공할 건물의 대지 면적을 계산한다.*/
int wide; /* 넓이 : 대지의 동서방향의 가로길이, 미터단위로 계산한다. */
int height; /* 높이 : 대지의 남북방향의 세로길이, 미터 단위로 계산한다.*/

의사 코드를 프로그램에 기입하라
프로그램의 목적을 주석으로 달아라
/**********************************************/
/* 언제 작성일 : 2004년 2월 10일 */
/* 어디서 장 소 :
/* 누가 작성자 :
/* 무엇을 코드성격 : php 코드로 약 20여줄
/* 왜 작성사유 :
/* 어떻게 작성환경 : APM
/**********************************************/