HWP문서5. 코드리뷰 클리닉 체크리스트(지도교수, 멘토).hwp

닫기

코드 리뷰 체크리스트 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)가 적절하게 사용되는가?