코드 리뷰 체크리스트 by Burnstein

코드 리뷰란? 개발자가 작성한 코드를 다른 개발자가 검토하여 오류를 발견하고 개선하는 활동입니다. 코드 리뷰를 통해 개발자는 코드의 품질을 향상시키고, 버그를 줄이고, 코드의 이해도를 높이고, 유지보수를 쉽게 할 수 있습니다.

출처: 페이지 331, Ilene Burnstein의 저서 Practical Software Testing(Springer-Verlag 출판, 2003년)

코드 리뷰를 할 때는 다음과 같은 체크리스트를 참고할 수 있습니다.

설계 이슈

  • 각 유닛이 하나의 단일 기능을 구현하는가?
  • 분할되었어야 하는 유닛이 있는가?
  • 코드가 상세 설계와 일관적인가?
  • 코드가 상세 설계를 커버하는가?

데이터 항목

  • 입력 타당성 체크가 있는가?
  • 어레이의 차원, 경계, 인덱스가 체크 되었는가?
  • 모든 변수가 정의되고 초기화되었는가? 정확한 타입과 범위인지 체크 되었는가?
  • 모든 변수가 사용되는가?

컴퓨테이션

  • 비일관적인 데이터 타입을 가진 변수들을 사용한 컴퓨테이션이 존재하는가?
  • 혼합 모드 컴퓨테이션이 존재하는가?
  • 할당의 타겟 값이 우측 표현식보다 작은가?
  • 오버플로우 또는 언더플로우 가능성이 있는가(예, 0으로 나누기)?
  • 정수 또는 부동소수점 연산의 유효하지 않은 사용이 있는가?
  • 부동소수점 숫자들 간의 비교가 존재하는가?
  • 부울 표현식에서 평가 순서에 대한 가정이 있는가?
  • 비교 연산자가 정확한가?

통제 흐름 이슈

  • 프로그램, 모듈, 또는 유닛이 결국에는 종료하는가?
  • 무한 루프, 정상보다 일찍 빠져나가는(a premature exit) 루프, 절대 실행되지 않는 루프 등이 있는가?

인터페이스 이슈

  • 호출하는 루틴에 의해 사용되는 파라미터의 수와 애트리뷰트가 호출되는 루틴의 그것과 매치되는가? Caller와 Callee에서 파라미터의 순서 또한 정확하고 일관적인가?
  • 함수 또는 프로시저가 입력 파라미터만으로 의도된 파라미터를 변경하는가?
  • 전역 변수가 있는 경우, 이를 사용하는 모든 모듈에서 상응하는 정의와 애트리뷰트를 가지는가?

입/출력 이슈

  • 모든 파일이 사용을 위해 열렸는가?
  • 종료 시 모든 파일이 적절하게 닫히는가?
  • 파일이 선언된 경우 그 애트리뷰트가 정확한가?
  • EOF 또는 I/O 에러 조건이 정확하게 다루어지는가?
  • I/O 버퍼 크기와 레코드 크기가 조화되는가(compatible)?

이식성 이슈

  • 가정된 문자 집합, 정수 또는 부동소수점 표현이 존재하는가?
  • 수정될 필요가 생길 수도 있는 서비스 호출이 존재하는가?

에러 메시지

  • 모든 경고와 알림 메시지가 적절하게 체크되고 사용되었는가?

코멘트/코드 문서화

  • 코드가 적절하게 문서화되었는가? 적절한 장소에 전역 코멘트, 프로시져 코멘트, 라인 코멘트가 있는가?
  • 문서화가 명확하고, 정확하고, 이해를 돕는가?

코드 배치와 여백

  • 코드 로직 및 의도에 대한 이해를 돕기 위해 여백과 들여쓰기(indentation)가 사용되었는가?

유지보수

  • 각 모듈이 단일 출구점(a single exit point)를 가지는가?
  • 모듈들의 변경이 쉬운가(낮은 결합도와 높은 응집도)?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다