'프로그래밍의 모든 것' 이라는 책에서 제시하는 프로그래밍 시에 명심해야할 지침들을 정리했다.

스타일(Style)

  1. 전역 변수에 대해서는 설명적인 이름을 사용하고, 지역 변수에 대해서는 짧은 이름을 사용하라.
  2. 코드의 일관성을 유지하라.
  3. 함수에 대해서는 활동적인(active) 이름을 사용하라.
  4. 정확성을 유지하라.
  5. 프로그램의 구조를 보이기 위하여 들여 쓰기를 하라.
  6. 표현식에 대하여 자연스러운 형태를 사용하라.
  7. 모호성을 제거하기 위하여 괄호를 사용하라.
  8. 복합적인 표현식을 간단한 표현식으로 나누어라.
  9. 부효과(side effect)에 주의하라.
  10. 일관성있게 들여 쓰기와 중괄호를 사용하라.
  11. 일관성을 위하여 관용적 표현을 사용하라.
  12. 다중 선택에 대해서는 else-if 문을 사용하라.
  13. 함수 매크로를 사용하지 마라.
  14. 매크로의 바디와 인자에 대해서 괄호를 사용하라.
  15. 매직 수(magic number)에 대하여 이름을 붙여라.
  16. 정수 값을 사용하지 말고 문자 상수를 사용하여라.
  17. 객체의 크기를 계산하기 위하여 언어를 사용하라.
  18. 분명한 것은 오래 논하지 말아라.
  19. 함수와 전역 데이터에 대하여 주석을 붙여라.
  20. 나쁜 코드에 대하여 주석을 달지말고 다시 작성하라.
  21. 코드를 부정하지 말아라.
  22. 혼란스럽게 하지 말고 분명하게 하라.

인터페이스(Interface)

  1. 구현의 세부사항을 숨겨라.
  2. 최소한의 기능을 제공하고 기능의 중복을 피하라.
  3. 구현의 상세함을 들여다보지 말라.
  4. 언제나 같은 곳에서 같은 방법으로 같은 일을 수행하라.
  5. 자원을 할당하였던 같은 수준에서 자원을 해제하여라.
  6. 낮은 레벨에서가 아니라 높은 레벨에서 에러를 처리하여라.
  7. 단지 예외적인 상황에서만 예외를 사용하여라.

디버깅

  1. 익숙한 패턴을 찾아라.
  2. 가장 최근에 수정한 부분을 조사하여라.
  3. 같은 실수를 반복하지 말아라.
  4. 디버깅을 다음으로 미루지 말고 지금하라.
  5. 스택 추적을 이용하여라.
  6. 타이핑 전에 코드를 읽어라.
  7. 타인에게 자신의 코드를 설명하여라.
  8. 재생 가능하도록 버그를 만들어라.
  9. 분할 정복(divide and conquer)의 방법을 사용하라.
  10. 실패하는 횟수의 수비학(numerology) 에 대하여 살펴보라.
  11. 검색 범위를 줄일 수 있는 출력 값을 표시하라.
  12. 스스로 검사하는 코드를 작성하라.
  13. 로그 파일을 작성하라.
  14. 그림을 그려라.
  15. 툴을 사용하여라.
  16. 기록을 유지하라.

테스팅

  1. 경계 상에서 코드를 테스트하라.
  2. 수행 이전과 이후의 조건을 테스트하라.
  3. 어서션(assertion)들을 사용하라.
  4. 방어적으로 프로그래밍하라.
  5. 반환되는 에러값을 검사하라.
  6. 점층적으로 테스트하라.
  7. 우선적으로 간단한 부분을 테스트하라.
  8. 예상되는 결과를 파악하라.
  9. 보전되는 속성들을 검증하라.
  10. 독립적인 구현들을 비교하라.
  11. 테스트 범위를 측정하라.
  12. 변형 검사를 자동화하라.
  13. 자체적으로 실행이 가능한 테스트들을 작성하라.

성능

  1. 시간 측정을 자동화하라.
  2. 프로파일러를 사용하라.
  3. 핫스팟(hot spot)에 집중하라.
  4. 그림을 그려라.
  5. 더 우수한 자료 구조와 알고리즘을 사용하라.
  6. 컴파일러의 최적화 기능을 이용하라.
  7. 코드를 조정하라.
  8. 문제가 되지 않는 것을 최적화하지 말아라.
  9. 공통의 부표현식(subexpression)을 모아라.
  10. 성능면에서 비싼 연산을 같은 기능의 값싼 연산으로 교체하라.
  11. 루프를 풀거나 제거하라.
  12. 자주 사용되는 값들을 캐시에 저장하라.
  13. 특별한 경우는 분리하여 처리하라.
  14. 결과 값들을 미리 계산하라.
  15. 근사 값들을 사용하라.
  16. 저급 언어로 다시 작성하라.
  17. 가능한 작은 크기의 데이터 타입을 사용함으로써 공간을 줄여라.
  18. 쉽게 다시 계산 가능한 것은 저장하지 마라.

이식성(Portability)

  1. 표준을 준수하라.
  2. 메인스트림 상에서 프로그램하라.
  3. 프로그래밍 언어의 문제 지점을 주의하라.
  4. 표준 라이브러리를 사용하라.
  5. 어디에서나 사용 가능한 특징들만을 사용하라.
  6. 조건 컴파일을 사용하지 마라.
  7. 시스템 의존적인 것들을 독립적인 파일에 담도록 하라.
  8. 시스템 의존적인 것들을 인터페이스의 뒤에 숨기도록 하라.
  9. 데이터 교환을 위하여 텍스트를 사용하여라.
  10. 데이터 교환을 위하여 고정된 바이트 순서를 사용하여라.
  11. 스펙(specification)을 변경하는 경우 명세의 이름을 변경하라.
  12. 존재하는 프로그램과 데이터와의 호환성을 유지하라.
  13. ASCII 문자를 당연하게 받아들이지 마라.
  14. 모두 같은 언어를 사용하는 것이 아님을 잊지 말아라.
  • computer/software/프로그래밍의_모든_것.txt
  • Last modified: 3 years ago
  • by likewind