From d4eb84ee8120eb89694208391f3c1db187e83d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=20=EC=9E=AC=EC=84=B1?= Date: Thu, 11 May 2023 09:18:44 +0900 Subject: [PATCH] docs(cc-java): add reviewer guide to lms mission (#26) --- reviewguide/cleancode/README.md | 6 ++--- reviewguide/cleancode/bowling.md | 2 +- reviewguide/cleancode/lms.md | 38 ++++++++++++++++++++++++++++++ reviewguide/cleancode/lotto.md | 4 ++-- reviewguide/cleancode/racingcar.md | 2 +- 5 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 reviewguide/cleancode/lms.md diff --git a/reviewguide/cleancode/README.md b/reviewguide/cleancode/README.md index b809654..2c66cc6 100644 --- a/reviewguide/cleancode/README.md +++ b/reviewguide/cleancode/README.md @@ -2,9 +2,9 @@ ## 클린코드 with Java 학습 목표 #### 기술적인 측면 -1. TDD, 리팩토링, 클린코드 +1. TDD, 리팩터링, 클린코드 2. 순수 자바로 객체지향 프로그래밍 -3. 레거시 코드 리팩토링 +3. 레거시 코드 리팩터링 #### 기술 외적인 측면 1. 프로그래밍 자체가 얼마나 재미있는 활동인지 경험 @@ -16,7 +16,7 @@ - [자동차 경주 - 단위 테스트](./racingcar.md) - [로또 - TDD](./lotto.md) - [사다리타기 - FP, OOP](./ladder.md) -- [볼링 게임 점수 게시판](./bowling.md) +- [수강신청 - 레거시 코드 리팩터링](./lms.md) --- ## 리뷰어 -> 수강생 상호 평가 diff --git a/reviewguide/cleancode/bowling.md b/reviewguide/cleancode/bowling.md index b909a0e..b476ca2 100644 --- a/reviewguide/cleancode/bowling.md +++ b/reviewguide/cleancode/bowling.md @@ -2,7 +2,7 @@ --- ## 리뷰어 가이드 -1단계 미션이 레거시 코드 리팩토링하는 미션으로 서비스 레이어의 코드를 도메인 객체로 리팩토링하는 미션이다. +1단계 미션이 레거시 코드 리팩터링하는 미션으로 서비스 레이어의 코드를 도메인 객체로 리팩터링하는 미션이다. 지금까지 학습한 내용을 실무에 적용해보는 상당히 중요한 미션인 만큼 도메인 객체로 로직 분리를 잘 하도록 리뷰한다. 가능하면 리뷰어가 판단하기에 만족하는 수준이 될 때까지 피드백을 남긴다. QnaService의 결과 코드는 다음과 같은 구조가 되도록 피드백 하면 좋겠다. diff --git a/reviewguide/cleancode/lms.md b/reviewguide/cleancode/lms.md new file mode 100644 index 0000000..b7b2f06 --- /dev/null +++ b/reviewguide/cleancode/lms.md @@ -0,0 +1,38 @@ +# LMS - 수강신청 + +--- + +## 리뷰어 가이드 +## 1단계 +1단계 미션이 레거시 코드 리팩토링하는 미션으로 서비스 레이어의 코드를 도메인 객체로 리팩토링하는 미션이다. +지금까지 학습한 내용을 실무에 적용해보는 상당히 중요한 미션인 만큼 도메인 객체로 로직 분리를 잘 하도록 리뷰한다. +가능하면 리뷰어가 판단하기에 만족하는 수준이 될 때까지 피드백을 남긴다. +QnaService의 결과 코드는 다음과 같은 구조가 되도록 피드백 하면 좋겠다. + +``` +@Transactional +public void deleteQuestion(User loginUser, long questionId) throws CannotDeleteException { + Question question = findQuestionById(questionId); + List deleteHistories = question.delete(loginUser); + deleteHistoryService.saveAll(deleteHistories); +} +``` + +## 2단계 +2단계 요구사항에 대한 비지니스 로직을 도메인 모델 객체에 구현하는 경험이다. +기존에 비지니스 레이어(Service 또는 Manager라 불리는 클래스)에 로직을 구현하는 것이 일반적이다. +1단계 경험과 같이 비지니스 로직을 도메인 객체에 잘 구현하는지에 대해 집중해서 피드백한다. +2단계는 데이터베이스에 대한 CRUD는 없다. + +## 3단계 +3단계는 2단계에서 구현한 도메인 객체를 데이터베이스와 매핑하고, CRUD를 진행하는 단계이다. +3단계에서 집중적으로 피드백할 부분은 2단계에서 구현한 도메인 객체를 최대한 깨트리지 않으면서 데이터베이스와 매핑하는 부분을 집중 피드백한다. + +## 4단계 +현장에서 자주 발생하는 테이블 칼럼에 변경사항이 발생했을 때의 레거시 코드 리팩터링 경험을 하는 단계이다. +요구사항이 변경되면서 데이터베이스 테이블의 칼럼에 변화가 있는 경우이다. +코드 리팩터링과 같이 테이블에 변경이 발생하더라도 점진적인 리팩터링을 하는 것이 이 단계의 핵심 목표이다. +점진적이고, 안정적으로 레거시 코드를 리팩터링하려면 항상 AS-IS와 TO-BE 데이터가 공존하는 순간이 필요하다. + +리뷰이와 소통할 때 점진적인 리팩터링을 어떻게 진행했는지에 대해 이야기 나눠보면 서로의 성장에 도움이 될 것이다. + diff --git a/reviewguide/cleancode/lotto.md b/reviewguide/cleancode/lotto.md index f020e8e..f9accb1 100644 --- a/reviewguide/cleancode/lotto.md +++ b/reviewguide/cleancode/lotto.md @@ -28,8 +28,8 @@ --- ## 경험해야할 학습 목표 - TDD 기반으로 프로그래밍하는 경험 -- 메소드 분리 + 클래스를 분리하는 리팩토링 경험 -- 점진적으로 리팩토링하는 경험 +- 메소드 분리 + 클래스를 분리하는 리팩터링 경험 +- 점진적으로 리팩터링하는 경험 --- ## 경험할 객체지향 생활 체조 원칙 diff --git a/reviewguide/cleancode/racingcar.md b/reviewguide/cleancode/racingcar.md index 936bdc0..29cf34a 100644 --- a/reviewguide/cleancode/racingcar.md +++ b/reviewguide/cleancode/racingcar.md @@ -28,7 +28,7 @@ - Github 기반으로 온라인 코드 리뷰하는 경험 - JUnit 사용법을 익혀 단위 테스트하는 경험 - 자바 code convention을 지키면서 프로그래밍하는 경험 -- 메소드를 분리하는 리팩토링 경험 +- 메소드를 분리하는 리팩터링 경험 --- ## 경험할 객체지향 생활 체조 원칙