코드 리뷰 체크리스트 1안 – 공통

<표 1> 공통된 코드 리뷰 체크리스트 (예시)

순번	내용	평가
		Pass	Fail	해당유무
1	․ Coding Conventions에 따라 개발되었는가? (예: 변수 네이밍, 들여쓰기, 괄호 등)	○
2	․ 변수 정의가 적절히 주석처리가 되어있는가?
3	․ 숫자 데이터의 단위가 명확히 명시되어 있는가? (예: cm, m, sec, min 등)
4	․ 주석화된 코드가 하나의 설명으로 되어있는가?
5	․ 코드 안의 빠진 기능 또는 해결되지 않은 이슈에 대해 주석화되어 있는가?
6	․ 에러에 대한 함수 리턴(return)이 적절히 다루어 지고 있는가?
7	․ 에러 핸들링 코드가 테스트 되었는가?
8	․ 같은 객체가 두 번 이상 해제되고 있는가?
9	․ 모든 전역 변수들은 쓰레드(thread)에 안전한가?
10	․ 코드가 무한 루프에서 자유로운가?
11	․ 재귀 함수는 스택 영역을 충분히 확보한 상태에서 실행되는가?
12	․ 함수가 스택에 정의된 객체에 대한 참조를 리턴하고 있는가?
13	․ 배열(array)에서 인덱스(index)가 범위 밖인지를 체크 하는가?
14	․ 변수들이 사용되기 전에 초기화되어 있는가?
15	․ 코드에서 존재하는 API를 사용해서 새로운 기능을 만들었는가?
16	․ 버그가 발견되면 모두 올바르게 수정(문서화)하는가?
17	․ (필요 시 교수자는 프로그램 언어별 특성을 고려하여 체크리스트를 추가 작성)

코드 리뷰 체크리스트 2안 – Scratch, R, Python 언어

<표 2> Scratch, R, Python 프로그램 언어를 위한 코드 리뷰 체크리스트 (예시)

순번	항목	내용	평가
			Pass	Fail	해당유무
1	설계 이슈 (Design Issues)	․ 각 유닛이 하나의 단일 기능을 구현하는가?	○
		․ 분할되었어야 하는 유닛이 있는가?
		․ 코드가 상세 설계(detailed design)와 일관적인가?
2	데이터 항목 (Data Items)	․ 모든 변수가 정의되고 초기화되는가(initiated)?
		․ 정확한 타입(types)과 범위(scopes)인가?
		․ 모든 변수가 의미있게 사용하는가?
3	컴퓨테이션 (Computations)	․ 오버플로우 또는 언더플로우 가능성이 있는가?
		․ 정수(integer) 또는 부동소수점(floating point) 연산에서 유효하지 않은 사용이 있는가?
		․ 비교 오퍼레이터가 정확한가?
4	통제 흐름 이슈 (Control Flow Issues)	․ 프로그램, 모듈, 또는 유닛이 결국에는 종료하는가?
		․ 무한 루프, 정상보다 일찍 빠져나가는(a premature exit) 루프, 절대 실행되지 않는 루프 등이 있는가?
5	인터페이스 이슈 (Interface Issues)	․ 호출하는 루틴(Caller)에서의 파라미터의 수와 속성이 호출되는 루틴(Callee)의 그것과 매치되는가?
		․ 함수(function 또는 procedure)가 입력 파라미터만으로 의도된 파라미터를 변경하는가?
6	입/출력 이슈 (Input/output Issues)	․ 모든 파일이 사용을 위해 열렸는가?
		․ 종료 시 모든 파일이 적절하게 닫히는가?
		․ 파일이 선언된(declared) 경우 그 속성이 정확한가?
		․ EOF 또는 I/O 에러 조건이 정확하게 다루어지는가?
		․ I/O 버퍼 크기와 레코드 크기가 조화되는가?
7	이식성 이슈 (Portability Issues)	․ 가정된 문자 집합(an assumed character set), 정수 또는 부동소수점 표현이 존재하는가?
		․ 수정될 필요가 생길 수도 있는 서비스 호출이 존재하는가?
8	에러 메시지 (Error Messages)	․ 모든 경고(warnings)와 알림 메시지가 적절하게 체크되고 사용되었는가?
9	코멘트/코드 문서화 (Comments/Code Doc.)	․ 코드가 적절하게 문서화 되었는가?
		․ 문서화가 명확하고, 정확하고, 이해를 돕는가?
10	코드 배치와 여백 (Code Layout/White Space)	․ 코드 로직 및 의도에 대한 이해를 돕기 위해 여백과 들여쓰기(indentation)가 사용되었는가?
11	유지보수 (Maintenance)	․ 각 모듈이 단일 출구점을 가지는가?
		․ 모듈들의 변경이 쉬운가?

코드 리뷰 체크리스트 3안 – Python, C, Java 언어

<표 3> Python, C, Java 프로그램 언어를 위한 코드 리뷰 체크리스트 (예시)

순번	항목	내용	평가
			Pass	Fail	해당유무
1	데이터 항목 (Data Items)	․ 모든 변수가 소문자로 되어있는가?	○
		․ 모든 변수가 초기화되는가(initialized)?
		․ 모든 변수명이 일관적이고 그 사용 의도를 나타내는가?
		․ 모든 선언(declarations)이 문서화 되었는가?
		․ 각 이름이 단일 함수(function)를 위해 사용되는가?
		․ 변수의 범위(scope)가 의도한대로인가?
2	상수 (Constants)	․ 모든 상수가 대문자로 되어있는가?
		․ 모든 상수가 "#define"으로 정의되었는가?
		․ 다수 파일에서 사용되는 모든 상수가 INCLUDE 헤더 파일에서 정의되었는가?
3	포인터 (Pointers)	․ 포인터가 적절하게 포인터로서 선언되었는가?
		․ 포인터가 적절하게 초기화되었는가?
4	통제 (Control)	․ if/then, else, switch 문이 명확하고 적절하게 사용되는가?
5	스트링 (Strings)	․ 스트링이 적절한 포인터를 가져야 함
		․ 스트링이 NULL로 끝나는가?
6	괄호 (Brackets)	․ 모든 중괄호가 적절하게 들여쓰기가 되어있으며 매치되는가?
7	논리 연산자 (Logic Operators)	․ 모든 초기화가 "="가 아니라 "=="를 사용하는가?
		․ 모든 논리 연산자가 정확한가?
8	컴퓨테이션 (Computations)	․ 복잡한 표현식에서 괄호가 선후 관계 명세를 위해 적절하게 사용되는가?
		․ 시프트(shifts)가 적절하게 사용되는가?