User Tools

Site Tools


public:computer:coding_rules

Coding Rules

Objectives

  • 오류 없는 프로그램
  • 이해하기 쉬운 코드 → 유지보수가 쉬운 코드

Guide Line

  • Indent는 Tab이 아닌 Space로, 2또는 4 ( 4를 권장 )
  • Function, Method는 한 화면 안에 들어오도록 (20~30줄 내외)
  • brace는 새로운 줄에서 시작

if ( condition )
{
  // .. do something 
}

  • 2단계를 초과하는 brace는 새로운 method, function으로 작성
  • 변수의 초기화에 주의
  • recursive에 주의
  • heap에 할당하는 메모리의 해제에 관한 해제 확인 ( GC가 있는 경우 제외 )
  • 변수의 이름은 hunggarian notation을 참고한 naming
    • static; s_ 접두어
    • global; g_ 접두어
    • member; m_ 접두어
    • string; strName, strAddress, …
    • int; nID, …
    • resource; IDC_BTN_, IDC_EDIT, IDC_TREECTRL, …
    • controls; m_btnOK, m_editAddress, m_treectrlDirectory, …
  • function, method의 naming rule 은 V(동사)+N(명사)를 기본으로 확장

bool GetPropertyWithName( string strName )
{
  // .. do something
}

  • 같은 프로젝트 내에서 같은 function, method 이름 회피
  • 조건문의 경우 가능하다면 '상수 (조건문) 변수'의 형태

if ( NULL == pszAddress )
{
  // .. do something
}

  • 리턴값의 확인; 리턴 값이 있는 함수의 호출의 경우 가능하면 리턴 값을 확인한다.
  • while, goto 사용 자제; 코드의 가독성을 위해 for 문이나 foreach를 권장한다.
  • 전역 변수의 사용 자제; 특별한 경우가 아니라면 전역 변수는 사용하지 않기를 권장한다.
  • 상수는 한 곳에 정의; 숫자를 직접 사용하기 보다 상수를 정의하여 사용하고, 상수는 하나의 파일에 정의하여 모아두거나 해당 소스의 가장 처음에 정의해둔다.

Coding Conventions

Coding Conventions
name description Usually used examples
flatcase package at Java, etc.
kebab-case
lisp-case
spinal-case
caterpillar-case
dash-case
hyphen-case
css-case
only small cases, spread with hypens css, kebab-case, lisp-case, spinal-case
camelCase variables at Java, C#, etc. let myVariable: string
PascalCase
CapitalCamelCase
Class class MyClass
snake_case
c_case
variables at Python, PHP, c, etc. snake_case
UPPER_CASE_SNAKE_CASE (UPPER_CASE)
MACRO_CASE
UPPER_CASE_SNAKE_CASE
COBOL-CASE
TRAIN-CASE
COBOL-CASE, HTTP-Header-Case
undercore notation prefixed by “_” followed by camelCase _idUser
Hungarian Notation variable names prefixed by metadata data-types which is out-dated C++, MFC strUsername
public/computer/coding_rules.txt · Last modified: by alex