코드 리뷰 수행하기
코드리뷰: 코드의 품질을 향상시키는 것
당신이 결함을 찾도록 도와서 엄청난 재난이 발생하지 않도록 막는것
더 큰 책임을 갖도록 조장한다
코드 리뷰란?
코드를 작성한 사람을 비웃거나 놀리려고 이렇게 하는 것이 아니다; 팀이 생산하는 소프트웨어의 품질을 높이려고 이렇게 하는 것이다.
코드리뷰는 다음과 같은 몇 가지 수준에서 문제점을 제거한다
- 전체적인 설계
- 설계가 코드에 표현되는 방법
- 의미론적인 블록 안의 코드
- 코드 명령문
개인적으로 - 더 상세하고 복잡한 작업
일대일 방식으로 - 비공식적이고, 작성자의 의해 주도되는 경향; 객관적인 외부 관점이 아니라, 작성자가 가정했던 내부 관점
공식적으로 - 문제점을 뿌리 뽑을 가능성이 더 크다
전체 프로젝트의 코딩 스타일에 더 통일성이 생긴다
코드 리뷰는 찾기 힘든 버그를 감지해서 제거하고, 코드의 품질을 높이고, 코드에 대한 공동 책임을 갖게 하고, 지식을 전파하는 우수한 도구이다
언제 리뷰하나?
철저한 코드 리뷰를 하려면 적어도 코딩 시간의 50% 이상을 소모해야 한다
리뷰를 해야할지
코드 작성자는 자기가 한 일에 있는 결함을 알아보기가 힘들다
코드를 리뷰하지 않으면 제품 소프트웨어에 결함이 숨어들어갈 가능성이 급격히 증가한다
어느 코드를 리뷰할지
잘못 될 가능성이 가장 큰 코드이거나, 시스템이 올바로 작동하기 위해 가장 중요한 코드
시도해 볼 수 있는 전략
- 중심에 되는 컴포넌트의 핵심 부분을 선택
- 프로파일러를 돌려서 CPU시간을 가장 많이 소모하는 부분을 찾은 후 그 부분을 리뷰
- 복잡도 분석 툴을 돌려서 가장 고약한 부분을 찾은 후 그 부분을 리뷰
- 이미 많은 버그가 드러났던 지역을 타깃으로 삼는다
- 당신이 신뢰하지 않는 프로그래머의 코드를 제물로 삼는다
코드 리뷰 실시하기
리뷰가 끝나면 사후 처리에 대한 합의가 있어야 한다
OK - 훌륭한 코드
재작업하고 검증 - 코드에 대한 약간의 재작업이 필요하지만, 코드 리뷰 회의를 다시 할 필요는 없다
재작업하고 다시 리뷰 - 코드에 많은 양의 재작업이 필요, 코드 리뷰 한번 더
통합 리뷰 : 간선 코드 브랜치에 새로운 코드를 통합할 때마다 실시하는 리뷰
- 새로운 코드가 소스 컨트롤에 체크인되기 직전
- 새로운 코드가 소스 컨트롤에 체크인되고 난 직후
- 코드 패키지가 기능 개발을 위한 브랜치로부터 주 릴리즈 브랜치로 합병 될 때
자신의 태도를 리뷰하라
작성자의 태도
- 코드 리뷰는 새로운 테크닉을 배울 수 있는 좋은 기회이다
- 리뷰 할 코드를 제출하기 전에 먼저 혼자서 리뷰 연습을 해보자 : 이거 좋은 거 같다
리뷰어의 태도
- 코드를 리뷰하고 비평할 때는 상대방의 기분을 생각하면서 해야 한다
- 모든 사람의 의견이 전부 중요하다
- 리뷰어의 태도가 중요하다. 온라인 코드리뷰 사용해보자.
완벽한 코드
리뷰를 통화하는 코드
- 버그가 없고
- 올바르고
- 완전하고
- 구조화가 잘 되어 있고
- 예측 가능하고
- 견고하고
- 데이터 체크를 하고 : 모든 시스템/라이브러리 호출의 리턴 값이 체크되어야 한다?
- 유지보수가 쉬운
코드 리뷰를 넘어서
리뷰 프로세스는 고품질의 제품 생산을 위한 열쇠
소스 코드 개발은 물론 규격서, 요구사항 목록, 그 밖의 것들에 대해서도 유사한 코드 리뷰 프로세스를 적용하자
좋은 프로그래머는…
- 코드 리뷰를 받고 싶어 하고, 자기의 코드 품질에 자신이 있다
- 다른 사람의 의견을 받아들이고, 그 의견으로부터 배운다
- 다른 사람의 코드에 대해 상대방 기분을 생각하면서 정확한 의견을 제시할 줄 안다
나쁜 브로그래머는…
- 코드 리뷰를 두려워하고, 다른 사람의 의견을 무서워 한다
- 비평을 나쁘게 받아들인다; 방어적이고 쉽게 화를 낸다
- 리뷰를 통해서 자기보다 못한 코더들보다 자기가 잘났다가는 것을 보여주려고 한다; 심할 정도로 가혹하고 비건설적인 논평을 한다
'프로그래밍 > Code Craft' 카테고리의 다른 글
[6부 정상으로부터의 조망] Chapter22 프로그램의 요리법 (0) | 2017.12.03 |
---|---|
[5부 프로세스의 일부] Chapter21 얼마나 걸릴까? (0) | 2017.12.01 |
[5부 프로세스의 일부] Chapter19 규격화하기 (0) | 2017.11.28 |
[4부 프로그래머의 무리] Chapter18 안전한 소스 습관 (0) | 2017.11.26 |
[4부 프로그래머의 무리] Chapter17 여기 우리 함께 서 있네 (0) | 2017.11.24 |
댓글