-
[코드 컴플리트] 변수 네이밍카테고리 없음 2023. 12. 17. 00:48
좋은 변수란 ?
프로그래밍의 가독성을 높인다. 이름은 가능한 한 구체적이어야 한다. 이름 규약은 지역, 구조체, 전역 데이터를 구분한다. 그리고 형 이름, 이름 상수, 열거형, 변수를 구분한다. 축약어를 사용해야 한다면 프로젝트 사전에 축약어를 기록한다. 작성하기 편리한 것보다는 읽기 쉬운 이름을 선택한다.
디버깅에 편리한 최적의 이름 길이
Gorla, A.C.Benander A.A.Benander 문자 10 - 16 책에서 추천 문자 8 - 20
변수를 모듈화한다.
전역 변수는 한정자(qualifier)를 사용한다. -> c에서는 구조체 -> 차량의 컴포넌트 별 변수를 구조체화 시킨다.
변수 이름의 계산값 한정자
Total, Sum, Svaerage,Max, Min, Record, String, Pointer와 같이 프로그램에서 자주 사용하는 한정자를 미리 정하고 아래와 같이 네이밍 규칙을 갖는다. 올바른 가이드 라인) revenueAverage, expenseAverage, revenueAverage, expenseAverage 부적절한 가이드 라인) averageRevenue, averageExpense -> 가이드 라인이 적절한 느낌을 준다.
상태 변수 이름
신호의 상태는 구체적인 열거체로 정리한다. ->열거형 자체는 e_ 접두사를 붙여 구분한다.
불린 변수 이름
done 무언가 수행되었다는 것을 가리킨다. error 오류가 발생했음을 가리키기 위해서 error를 사용한다. found 값이 발견되었다는 것을 가리키기 위해서 error를 사용한다. succcess 또는 ok 성공적인지를 가리키기 위해서 success 또는 ok를 사용한다.
개발 언어에 독립적인 규약을 위한 가이드라인
설명 구조체, 열거형 변수 첫 번쨰 문자를 대문자로 작성하여 타입과 변수를 구분한다. Widget widget 모든 문자를 대문자로 작성하여 타입과 변수를 구분한다. WIDGET widget 타입에 대해서는 "t_"라는 접두사를 넣어 타입과 변수를 구분한다. t_Widget widget 변수에 대해서 "a"라는 접두사를 넣어 타입과 변수를 구분한다. Widget awidget 좀 더 구체적인 변수의 이름을 사용하여 타입과 변수를 구분한다. Widget employeeWidget
C를 위한 이름 규약 가이드라인
요소 설명 TypeName 타입 선언은 첫 번째 문자가 대문자이면서 대문자와 소문자를 섞어서 사용한다. GlobalRoutinName() 공용 루틴의 이름은 대문자와 소문자를 섞어 사용한다. t_ModuleRoutinName() 특정 모듈(파일)에서만 사용할 수 있는 루틴은 접두사 t_를 사용한다. LocalVariable 지역변수는 대문자와 소문자를 섞어서 사용한다. RoutineParameter 루틴의 매개변수는 지역 변수와 같은 형식으로 작성한다. t_FIleStaticVariable 모듈(파일) 변수에는 접두사 f_를 사용한다. g_GLOBAL_GlobalVariable 전역 변수는 접두사 G_를 사용하고 변수를 정의하는 모듈(파일)을 연상할 수 있는 표현을 대문자(예를들면, ADSENALBE_)로 작성한다. g_GLOBALCONSTANT 전역 이름 상수는 접두사 G_를 사용하고 이름 상수를 정의하는 모듈(파일)을 연상 할 수 있는 표현을 대문자(예를들면, ADSENABLE_)로 작성한다. LOCALMACRO() 단일 루틴이나 모듈(파일)에서만 접근할 수 있는 맼로 정의는 모두 대문자를 사용한다. G_GLOBAL_CACRO() 전역 매크로 정의는 접두사 G_를 사용하고 이름 상수를 정의하고 있는 모듈(파일)을 연상할 수 있는 표현을 써서 대문자(예 ADSENABLE_)로 작성한다. 축약에 대한 가이드라인
표준 축약어를 사용한다(사전에 나와 있는 널리 사용되는 용어) 불필요한 모음을 제거한다.(computer는 cmptr, screen은 scrn, apple는 appl, interger는 intgr로 쓴다) 관사와 접속사를 제거한다.(and, or, the 등) 각 단어의 첫 번째 문자나 처음 문자 몇개를 사용한다. 첫 번째나 두 번쨰, 세 번째 문자(어느 방법이든 적절한 것을 선택)에서 일관성 있게 단어를 자른다. 각 단어의 첫 번째와 마지막 문자를 유지한다. 이름에서 가장 중요한 단어를 최대 세 단어까지 사용한다. 불필요한 접미사를 제거한다.(ing, ed 등) 각 음절에서 가장 뚜렷한 소리를 유지한다. 매우 짧은 이름은 코드 내 테이블을 만들어 관리한다.
*********************************************************************** Translation Table Variable Meaning -------- ------- XPOS x-Coordinate Position (in meters) YPOS y-Coordinate Position (in meters) NDSCMP Needs Computing (=0 if no computation is needed; =1 if computation is needed) PTGTTL Point Grand Total PTVLMX Point Value Maximum PSCRMX Possible Score Maximum
문서를 작성하여 관리한다.
체크리스트
이름에 대한 고려 일반적인 고려사항 이름이 변수가 표현하고자 하는 것을 완벽하고 정확하게 설명하는가 ? 변수가 프로그래밍 언어의 해결책보다는 현실 세계의 문제를 가리키고 있는가? 의미를 고민할 필요가 없을 만큼 이름의 길이가 긴가? 계산 값 한정자가 이름의 끝에 있는가? Num 대신 Count나 index를 사용하는가? 데이터 종류에 따른 이름 반복문 인덱스의 이름이 의미가 있는가(반복문이 한 줄 이상이거나 중첩되어 있다면 i, j, k가 아닌 다른 것?) 모든 "임시" 변수가 의미 있는 이름인가? 불린 변수가 참일 때 그 의미가 분명한 이름인가? 열거형 이름이 범주를 가리키는 접두사나 접미사를 포함하고 있는가?(예: Color_Red, Color_Green, Color_Blue에 대해서 Color_) 이름 상수가 가리키는 숫자가 아니라 표현하고 있는 추상적인 요소를 위한 이름인가? 이름 규약 규약이 지역, 클래스, 전역 데이터를 구분하는가? 규약이 형 이름, 이름 상수, 열거형 변수를 구분하는가? 규약이 입력만 하는 매개변수를 강요하는 기능을 제공하지 않는 언어에서 입력만 하는 매개변수를 구별하고 있는가? 규약이 사용 언어의 표준 규약과 최대한 호환되는가? 이름이 가독성을 위해 일정한 형식을 따르는가? 짧은 이름 코드가 긴 이름을 사용하는가(짧은 이름을 반드시 사용하지 않아도 되는 경우)? 코드가 한 문자를 줄이기 위한 축약을 피하고 있는가? 모든 단어가 일관성 있게 축약되었는가? 이름을 발음하기가 쉬운가? 잘못 읽히거나 발음되는 이름을 피했는가? 짧은 이름을 변환 테이블에 기록했는가? 일반적인 이름 문제 : 다음과 같은 이름을 피했는가? 오해의 소지가 있는 이름 유사한 의미가 있는 이름 하나 또는 두 글자만 다른 이름 유사하게 들리는 이름 숫자를 사용한 이름 짧게 만들려고 의도적으로 잘못 쓴 이름 영어에서 일반적으로 잘못 쓰기 쉬운 이름 표준 라이브러리 루틴 이름이나 미리 정의된 이름과 충돌하는 이름 완전히 제멋대로인 이름 읽기 어려운 문자