4.1.코드 리뷰 프로세스

코드 리뷰는 다른 개발자가 작성한 코드를 검토하고 개선점을 제안하는 프로세스입니다. 코드 리뷰는 코드의 품질을 향상시키고 버그를 줄이며 개발자의 코딩 스타일을 개선하는 데 도움이 됩니다.

코드 리뷰 프로세스

  1. 코드 리뷰 요청: 코드 작성자는 코드 리뷰를 요청합니다.
  2. 리뷰어 지정: 코드 리뷰 요청을 받은 팀 리더 또는 코드 작성자가 리뷰어를 지정합니다.
  3. 코드 검토: 리뷰어는 코드를 검토하고 개선점을 제안합니다.
  4. 코드 수정: 코드 작성자는 리뷰어의 제안을 참고하여 코드를 수정합니다.
  5. 코드 병합: 코드 수정이 완료되면 코드 리뷰 프로세스가 종료되고 코드가 병합됩니다.

코드 리뷰 체크리스트

  • 코드 스타일 및 형식 검사
  • 코드의 명확성 및 가독성 검사
  • 논리적 오류 및 버그 검사
  • 보안 취약점 검사
  • 테스트 코드 검사
  • 코딩 규칙 및 표준 준수 검사

코드 리뷰 팁

  • 코드 리뷰는 협력적인 과정임을 기억하십시오.
  • 리뷰어는 코드 작성자를 존중하고 건설적인 피드백을 제공해야 합니다.
  • 코드 작성자는 리뷰어의 피드백을 열린 마음으로 받아들이고 코드를 개선해야 합니다.
  • 코드 리뷰 프로세스를 문서화하고 표준화하는 것이 좋습니다.

코드 리뷰 도구

  • 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