본문 바로가기

to BE Team Leader Project

[프로그래밍] 코드 작성 습관 v.0.0.001


코드를 작성하는데에는 알고리즘을 생각하고, 거기에 맞는 자료구조를 짜내어 모든 코드가 유기적, 논리적 일관성을 가지고 작동하도록 하는것이 중요하다. 하지만 그 이전에 코드를 보기 좋게, 일관적인 규칙을 가지고, 다른사람이 봤을때 쉽게 파악할 수 있게 작성하는것 또한 중요하다. 그렇기 때문에 다음과 같은 것들을 생각하여 작성하여 보다 논리적이고, 읽기 쉬운 간단한 코드를 작성하는 연습을 해보는 것 또한 중요하다.

  1. 모든 변수는 초기화를 시켜준다.
      초기화하지 않은 변수는 가끔 사용자의 착각으로 인해 잘못된 참조를 야기시킬 수 있다. 예를들어 인덱스 번호가 -38492052 인것처럼
     
  2. 모든 동적 메모리는 해제하자.
      메모리 누수라는게 참 무섭다. 갑자기 VS가 죽어버린다. 무언가를 생성하면 어디에서 해제 되어야하는지, 항상 명심하자.
     
  3. 변수명은 규칙에 맞게 작성하자.
      맴버변수, 지역변수 의 구분을 확실히 하고, 타입을 명시하여 그 변수가 어떤 역할을 할 지 알려주는 것 또한 중요하다.
      예를들어 m_strName, m_iCount, BOOL, TRUE, FALSE 등의 상황에 맞는 변수명을 작성하자. m_은 맴버변수, g_는 전역변수, 등의 Naming Convention을 추구하자.
     
  4. 단어선택은 일관성있고, 함수의 기능을 표현할 수 있도록 작성한다.
      OnKeyDown, OnClick 등의 On은 이벤트를 의미한다.
    클래스 작성 또한 대문자로 시작하는 습관을 가진다.(주로 C++/ C#)

  5. 파라미터의 띄워쓰기는 일관성 있게 작성한다.
      예를들어, if( tmp == 1) , if(tmp == 1 ) , if( tmp == 1 ) 등 매번 다르게 사용하지말고 한가지 방법으로 작성한다.
    바디도 마찬가지로 
    if(){
    }   나 
    if()
    {} 로 일관되게 한가지 방식으로 작성한다.
     
  6. UX와 자료구조는 별개로 작성한다.
      컨트롤러에 자료구조를 작성하는 경우가 있는데, 컨트롤러의 구성요소는 결국 포인터이다. get이나 set의 구성요소를 설정하는 함수들이 많이 있지만, 이것은 가진 값들을 가져오거나 설정하기 위함이지, 자료구조를 이루려는 목적은 아니다.
      그러니까, 각 컨트롤러에 자료구조를 따로 만들어서 그 컨트롤러에 대응하는 자료를 따로 저장하는 습관을 가지도록하자. 실제로 접근도 더 쉬워질 것이다.
      나는 TreeCtrl에 정보를 저장해서 관리하고 있었는데, 팀장님께서 조언해 주신 내용은.이것보다는 TreeCtrl의 각 노드 포인터를 가지는 자료구조를 만들어 그것의 속성을 수정할 수 있는 자료구조를 만드는 것이 더 효율적이라 하셨다.  나또한 그렇게 생각한다.

  7. 재귀호출 같은 중복된 다회 호출인 경우에는 그 값을 넘기지 말고, 참조값을 넘기자.
      값을 넘기는 경우에는 그 값 길이 전부를 생성하지만, 참조인 경우에는 단순히 포인터를 위한 공간, 1byte를 자리로 가진다. 생각해보면, 이렇게 하는것이 당연한 것이다. 단순히 그 값이 필요한것이 아닌가. 받을때는, 만약 그 값의 수정을 원치 않는다면(잘못된 접근으로 인한 파라미터 값 손실, 변환) const나 final을 걸어주자. 하지만 이렇게 상수화 시키는건 때로는 더 안좋을 수도 있으니 상황에 맞게 작성하자.

  8. 각 단축키를 숙지해서 활용하자.
      단축키의 사용은 코드장성을 빠르게, 이쁘게 해준다. 물론 디버깅또한 포함된다.
     
  9. 클래스 위자드의 사용을 자제하자.
      클래스 위자드는 효율적인 변수, 함수를 선언하고, 만들어준다. 하지만 가끔씩 일관되지 않은 형식들로 기존 자신의 방법과 다르게 작성될 수도 있다. 또, 개발자라면, 자기가 일일이 다 할줄도 알아야 하지 않겠는가.


오늘은 여기까지.
항상 생각하는 서비스 개발자가 되자. 

'to BE Team Leader Project' 카테고리의 다른 글

[기획서] 주의사항  (0) 2011.12.01
[제안서] 란?  (0) 2011.11.09
[기획서 작성] 방법  (0) 2011.11.08