4단계 볼링 & 레거시 리팩토링과 회고
2022. 1. 17. 11:35
TDD 클린코드 java 10기 교육 과정
질문 답변 게시판 리팩토링 이 과정은 결국 실제 상황에서 리팩토링을 하기 위한 연습을 하는 과정이다. 그렇기에 순수 자바로 했던 미션들 보다 더욱 중요한 과정이 질문 답변 레거시 리팩토링 미션이다. 무진장 기대를하고 리팩토링을 시작했다. 그런데 ?? 생각보다 너무 간단하게 해결이 되었다. 너무나 당연하다는 듯이 해결이 되었다. 리팩토링을 해야하는 코드는 서비스 코드에 모든 로직이 있었다. 이를 리팩토링하는게 미션이었다. 도메인 레벨로 옮기는 것이다. 조금 막막할 줄 알았는데 의외로 해결이 잘 되어서 확실히 성장 했다고 느꼈다. 물론 설계가 잘 되어있어서 그랬을 수도 있겠지만.. ㅋ.ㅋ 예전 같으면 “이걸 뭘 어떻게 서비스에서 빼라는거야? 당연히 서비스에 있는거 아니야?" 라고 생각했을 것 같다. 실제로 ..
3단계 사다리
2022. 1. 9. 20:07
TDD 클린코드 java 10기 교육 과정
3단계 사다리 음.. 사다리 생성 미션가지 하고 중단 되었던 미션이다. 정말 어려웠던 미션이다. 그래서 예전 코드를 보고 리팩토링을 해보려다 포비님의 코드를 보고 충격을 먹고 참고하며 개발했다. 정말 잘게 잘게 클래스를 분리 하셨다. 그에 반에 나의 코드는 도메인 코드가 아주 간결했다. 그래서 UI를 살펴보니.. 아주 난리가 나있었다. API가 간단하니까 UI가 고생을 하고 있었다.. 최소한으로 공개하기 무조건 public으로 하지말고, 최소한으로 하고 필요하면 늘려가라. 공개할수록 예외는 증가한다. public으로 무작정 열어 놓으면 특정 기능을 전혀 무관한 곳에서 사용하여 의존성을 높일 수 있다. 클라이언트 입장에서 API를 제공하기 예를 들어 특정 파라미터를 받는 생성자를 열어 놓았다고 하자. 그런..
2단계 로또
2022. 1. 9. 19:39
TDD 클린코드 java 10기 교육 과정
2단계 로또 디미터 법칙 기존에는 통계내는 역할이 LottoTickets에 있었다. LottoTicket은 티켓을 생성하고 구매 금액을 검증하고, (통계)수익률과 순위당 맞은 개수를 구하고 있었다. 하지만 생각하다 보니 여기서 통계를 구하는 것이 맞을까? 게임을 하지도 않았는데? 라는 생각이 들었다. 그래서 게임을 시작하는 LottoGame으로 역할을 옮기게 되었다. 또 의문이 들었다. 여기서 통계를 구하는 것이 맞을까? 게임만 실행하면 되는데? 라는 생각이 들었다. 그래서 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴 책에서 본 디미터 법칙을 적용해보기로 했다. 애초에 디미터 법칙을 어기고 의존 객체의 내부 구조를 알아야 하는 코드였기 때문이다. 적용을 하다 보니 결국 아래와 같이 WinningS..
1단계 자동차 경주 회고
2022. 1. 9. 19:05
TDD 클린코드 java 10기 교육 과정
과정 소개 클린코드를 위한 TDD, 리팩토링 with java10 과정을 리뷰하려고 한다. 해당 과정은 순수 자바로 간단한 어플리케이션을 TDD로 만드는 과정이다. 자바를 어느정도 기본 문법만 안다면 초초초강추한다. 그 어디서도 배우기 힘든 교육이라고 생각한다. 왜냐하면, 능동적 학습을 할 수 있고, 코드 리뷰를 받을 수 있다. 그리고 운영하기 좋은 코드는 어떤 코드인가에 대해 집중하여 코드를 작성하다보니 자연스레 공부되는 점도 많다. 결과적으로 객체지향적으로 유지보수 하기 좋은 코드를 짜기위한 훈련을 하는 과정이다. 나는 서비스가 성장하기 위한 기본 베이스는 변화에 빠르게 대응할 수 있는 코드라고 생각한다. 변화에 빠르게 대응할 수 있는 코드는 클린 코드라고 생각한다. 물론 이상적으로 모두 완벽하게 할..