-
나의 코드 리뷰 가이드 만들기Semina/개발문화 2023. 9. 10. 15:05
백명석님의 코드 리뷰 강의를 듣고, 코드 리뷰 잘하기 위한 가이드를 정리합니다
나의 코드 리뷰 원칙
1. 가독성을 최우선으로 한다
- Composed Method 패턴 참고
2. Checklists 를 만들어 Feedback 합니다
checklists 예시
1) 한 메소드에 6개 이상을 처리하면 분리하도록 가이드 합니다
2) 변수, 메소드명, 파라미터명이 의미 있게 지어졌는지 확인합니다
- 추가로, versioning 이 적절한지 확인합니다
3) 사용되지 않거나 중복된 코드를 제거합니다.
4) 유지 보수가 용이 한지 확인합니다
- 잘 사용하지 않는 패턴, 지나치게 어려운 부분이 있는지 확인합니다
- gradle option 을 조정하여, deprecated 메소드가 있는지 확인합니다
5) 보안, compliance 를 준수하는지 확인합니다
또, Feedback 할 내용이 있으면, 그 수준을 Must / Should / had better / nice / great 로 표시합니다
3. Error Handling, Test, Logging, Docs 까지 Details 한 부분을 챙깁니다
- framework 개발자로서 신경써야 할 부분
4. 잘 작성된 부분을 찾아 Nice / Great 으로 Feedback 합니다.
5. Functional Core 와 Imperative Shell
핵심 로직은 가능한 의존성을 배제하고, Pure 하게 작성하도록 가이드 합니다.
외부 데이터 등에 의존하는 경우, Imperative shell 로 분리하도록 가이드 합니다.
상세 설명
1 가독성
Compose method 패턴 적용 예제
# code review 전
public void add(Object element) { if (!readOnly) { int newSize = size + 1; if (newSize > elements.length) { Object[] newElements = new Object[elements.length + 10]; for (int i = 0; i < size; i++) { newElements[i] = elements[i]; } elements = newElements; } elements[size++] = element; } }
# code review 후
private final static int GROWTH_INCREMENT = 10; public void add(Object element) { if (readOnly) { return; } if (atCapacity()) { grow(); } addElement(element); } // 가독성 위해 분리1 private boolean atCapacity() { return size + 1 > elements.length; } // 가독성 위해 분리2 private void grow() { Object[] newElements = new Object[elements.length + GROWTH_INCREMENT]; for (int i = 0; i < size; i++) { newElements[i] = elements[i]; } elements = newElements; } // 가독성 위해 분리3 private void addElement(Object element) { elements[size++] = element; }
자세한 Compose Method 패턴을 아래 link 를 참고하세요
Reference 백명석님 - 인프콘 2023 - 지속 가능한 소프트웨어 개발을 위한 경험과 통찰
2. Checklists 를 만들어 Feedback 합니다
Reference : https://nolongerset.com/code-that-fits-in-your-head/
코드 조각이 6가지 일을 초과하면 분리하도록 가이드 합니다
checklists 가 없다면, 나의 코드 리뷰에 일관성을 유지 할 수 없습니다
checklists 에 따라 리뷰 합니다
3. Error Handling, Test, Logging, Docs 까지 Details 한 부분을 챙깁니다
내가 작업하는 Framework 업무 맞도록 우선순위 조정하였습니다.
- 01. Framework 은 Error handling 이 매우 중요하므로 1순위로 합니다
- 02. Test 를 반드시 작성하여, 꼼꼼하게 검증합니다
- 03. Error 추적을 위해 debug 모드 사용시 적절하게 Log 를 남기도록 작성합니다
- 04. Domain팀 개발자가 사용할 수 있도록 Docs 를 작성합니다.
Reference : 9 page of "what makes a great software engineers?"
https://faculty.washington.edu/ajko/papers/Li2019WhatDistinguishesEngineers.pdf
'Semina > 개발문화' 카테고리의 다른 글
문화를 코딩합니다. (feat. 언택트 시대에 개발하는 방법) (0) 2021.12.19 LINE 플랫폼 서버의 장애 대응 프로세스와 문화 (0) 2021.12.18