4.1.코드 리뷰 프로세스
코드 리뷰는 다른 개발자가 작성한 코드를 검토하고 개선점을 제안하는 프로세스입니다. 코드 리뷰는 코드의 품질을 향상시키고 버그를 줄이며 개발자의 코딩 스타일을 개선하는 데 도움이 됩니다.
코드 리뷰 프로세스
- 코드 리뷰 요청: 코드 작성자는 코드 리뷰를 요청합니다.
- 리뷰어 지정: 코드 리뷰 요청을 받은 팀 리더 또는 코드 작성자가 리뷰어를 지정합니다.
- 코드 검토: 리뷰어는 코드를 검토하고 개선점을 제안합니다.
- 코드 수정: 코드 작성자는 리뷰어의 제안을 참고하여 코드를 수정합니다.
- 코드 병합: 코드 수정이 완료되면 코드 리뷰 프로세스가 종료되고 코드가 병합됩니다.
코드 리뷰 체크리스트
- 코드 스타일 및 형식 검사
- 코드의 명확성 및 가독성 검사
- 논리적 오류 및 버그 검사
- 보안 취약점 검사
- 테스트 코드 검사
- 코딩 규칙 및 표준 준수 검사
코드 리뷰 팁
- 코드 리뷰는 협력적인 과정임을 기억하십시오.
- 리뷰어는 코드 작성자를 존중하고 건설적인 피드백을 제공해야 합니다.
- 코드 작성자는 리뷰어의 피드백을 열린 마음으로 받아들이고 코드를 개선해야 합니다.
- 코드 리뷰 프로세스를 문서화하고 표준화하는 것이 좋습니다.
코드 리뷰 도구
- GitHub Pull Requests
- GitLab Merge Requests
- Bitbucket Pull Requests
- Review Board
- Crucible
Spring Boot 프로젝트 코드 리뷰 예시 (수정 전 vs. 수정 후)
1. Controller:
수정 전:
@Controller
public class PostController {
@Autowired
private PostService postService;
@GetMapping("/posts")
public List<Post> getAllPosts() {
return postService.findAll();
}
@PostMapping("/posts")
public void createPost(@RequestBody Post post) {
postService.save(post);
}
}
수정 후:
@RestController
@RequestMapping("/api/posts")
public class PostController {
private final PostService postService;
public PostController(PostService postService) {
this.postService = postService;
}
@GetMapping
public List<Post> getAllPosts() {
return postService.findAll();
}
@PostMapping
public ResponseEntity<Post> createPost(@RequestBody Post post) {
Post savedPost = postService.save(post);
return ResponseEntity.status(HttpStatus.CREATED).body(savedPost);
}
}
변경 사항:
-
@Controller
대신@RestController
사용 (JSON 응답 자동 설정) -
@RequestMapping
어노테이션으로 경로 명확하게 설정 - 생성자를 통한
PostService
의존성 주입 -
@RequestBody
어노테이션으로 JSON 요청 바디 파라미터 매핑 -
save
메서드 결과 반환 -
ResponseEntity
사용하여 상태 코드 및 응답 본문 함께 반환
2. Service:
수정 전:
public interface PostService {
List<Post> findAll();
void save(Post post);
}
public class PostServiceImpl implements PostService {
@Autowired
private PostRepository postRepository;
@Override
public List<Post> findAll() {
return postRepository.findAll();
}
@Override
public void save(Post post) {
postRepository.save(post);
}
}
수정 후:
public interface PostService {
List<Post> findAll();
Post save(Post post);
}
public class PostServiceImpl implements PostService {
private final PostRepository postRepository;
public PostServiceImpl(PostRepository postRepository) {
this.postRepository = postRepository;
}
@Override
public List<Post> findAll() {
return postRepository.findAll();
}
@Override
public Post save(Post post) {
return postRepository.save(post);
}
}
변경 사항:
-
save
메서드 반환값 변경 (저장된Post
객체 반환) - 생성자를 통한
PostRepository
의존성 주입
3. 코드 스타일:
- 들여쓰기를 4 공간으로 통일
- 변수 이름에 낙타 표기법 사용
- 코드 블록에 주석 추가
4. 테스트 코드:
- 단위 테스트 및 통합 테스트 작성
- Spring Boot Test 라이브러리 활용
5. 코딩 규칙:
- Spring Boot 코딩 규칙 준수
참고:
- 이 코드 리뷰는 간단한 예시이며, 실제 프로젝트 상황에 따라 더 많은 개선점이 있을 수 있습니다.
- 코드 리뷰는 협력적인 과정이며, 리뷰어는 코드 작성자와 함께 코드를 개선하는 데 도움을 줍니다.
코드 리뷰는 코드의 품질을 향상시키고 버그를 줄이는 데 중요한 역할을 합니다. 효과적인 코드 리뷰 프로세스를 통해 개발자는 더 나은 코드를 작성하고 더 나은 소프트웨어를 개발할 수 있습니다.
source: DevOps/4.Code_Quality_Management/4.1.md