{


당연한 이야기겠지만, 가독성을 매우 높여주기 때문이다. C++ 하고 관계(?)는 없지만, 루아에선 변수가 런타임에 평가되기 때문에, 변수의 위치에 따라서 변수가 문자열이 될 수도, 테이블이 될 수도 있다. 결국 이 변수가 무엇인지 파악하기 위해선 위에 부터 아래까지 코드를 훓어 봐야만 한다.

그래서 루아에선 되도록 로컬 변수로 빼어서 사용 하려고 한다.(물론 이것은 나의 경우이다.) 루아가 C++과 관계는 없었지만 "가독성"은 사람의 이해를 한층 높여주는 것이기에 C++ 역시 마찬가지로 가독성을 높여야만 한다. (이런 측면에서 나는 루아로 코드를 짠다. 진현성 전임님의 말씀으로 "파이썬"도 무척이나 떙긴다. ; )

리팩토링 책을 읽다 보았던 글귀가 생각 난다.

"나는 매우 게으른 프로그래머이다. 나는 내가 작성한 코드도 기억을 못할 정도로 게으르다. 실은, 머리가 꽉 차버리는 것이 두려워, 찾아볼 수 있는 것은 일부러 기억하려 하지 않는다. 나는 나중에 기억할 필요가 없도록, 기억해야 할 모든 것을 코드에 넣는다. 이런 방법으로 오래된 기억이 내 뇌세포를 죽이는 것에 대한 걱정을 덜 수 있다"

왜 가독성이 좋아야 하는지 충분히 설명한거 같다. 가독성을 높이는 코딩 스타일은 코드를 많이 짜면 자동으로 아는데, 변수와 관련된 몇가지 경험을 이야기 하자면,
1. 변수가 실질적으로 필요하기 전까지 변수를 선언하지 않고,
2. 루프에서 사용하는 변수는 루프와 밀접하게 둔다.(물론 성능에 대해서 생각하면서...),
3. 쓸때없는 키워드로 변수를 선언하지 않고, 
4. 변수의 선언과 동시에 초기화 해 준다.
5. 전역 변수를 되도록 사용하지 않고, 사용해야 한다면 싱글턴 패턴을 이용한다.
6. 헝가리안 표기법보단 변수명을 자세히 적는다.(이건 개인 차이)
7. 멤버변수, 지역변수, 전역변수, 매개변수, 특수변수, 임시변수 들에 대한 작명 규칙을 만들고, 일관성을 유지한다.

음.. 더 생각이 안나네,  ㅋ 아참, 로컬 변수를 사용하면, 별도로 버그가 있을 법한 구역을 더 줄여주는 효과도 있다. 왜냐하면 로컬 변수는 로컬에서만 값이 변하기 때문이다. 어찌보면 당연하다. ; )


}

'책 정리 > C++ Coding Standards : C++ 코딩의 정석' 카테고리의 다른 글

항목 23 : 헤더 파일은 충분히 완성된 형태로 만들어라. ( Make header files self-sufficient. )  (0) 2009.02.24
항목 22 : 정의의 의존성과 순환 의존성을 최소화 하라. ( Minimize definitional dependencies. Avoid cyclic dependencies. )  (0) 2009.02.24
항목 21 : 컴파일 단위 사이의 초기화 의존성을 없애라. ( Avoid initialization dependencies across compilation units. )  (0) 2009.02.23
항목 20 : 너무 긴 함수와 많은 중첩구조는 피하라. ( Avoid long functions. Avoid deep nesting. )  (0) 2009.02.23
항목 19 : 변수는 항상 초기화하여 사용하라. ( Always initialize variables. )  (0) 2009.02.23
항목 18 : 가능하면 로컬 변수를 선언하여 사용하라. ( Declare variables as locally as possible. )  (0) 2009.02.23
항목 17 : 마법의 숫자는 쓰지 말라. ( Avoid magic numbers. )  (0) 2009.02.23
항목 16 : 매크로 사용을 자제하라.( Avoid macros. )  (0) 2009.02.21
항목 15 : const를 사용하라. ( Use const proactively. )  (0) 2009.02.21
항목 14 : 런타임 오류보다는 컴파일이나 링크 타임 오류가 낫다. ( Prefer compile- and link-time errors to run-time errors. )  (0) 2009.02.19
항목 13 : 자원은 개체가 가지게끔 하라. RAII와 스마트 포인터를 활용하라. ( Ensure resources are owned by objects. Use explicit RAII and smart pointers. )  (0) 2009.02.15
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기

댓글을 달아 주세요

">