프로젝트 구조

제출한 프로젝트 구조이다. 2주차인 지금 회고해 보니 common package 대신 utils package 를 쓰는것 그리고 view package 에서 InputView, OutputView 를 만들어서 관리해주는것이 좋지 않았을까 생각이 든다. 

추가로 Validation 패키지를 관리하면 좋지 않을까 생각했다. 

객체 

ErrorMessage

상수 메시지에 대한 책임을 가지고 있다. 일관된 [ERROR] 표시가 맘에든다.

 

UserInput

대충 보아도 UserInput에 부여되는 책임이 너무 많다. Parsing, Validation, SplitString, UserInput 이 주요 내용이다. 

하나의 클래스에 하나의 책임을 부여하는것이 좋을것 같다. 만약, 변경한다면 아래를 클래스로 작성하는것이 좋을듯 하다. 

 

Calculator

process 라는 메소드가 존재하는데, 객체로 생성했으면 더 나았지 않았을까? 생각이 든다. 아니면, 메서드가 하나 이기 때문에 process 자체를 정적 메소드 패턴으로 정의하면 더 깔끔하지 않았을까 생각한다. 

 

CalculatorInit

CalculatorInit의 역할은 무엇일까? 입력을 받고 계산된 결과를 받아서 처리한다. CalculatorInit은 입력과 결과를 처리하는데 의존적이다. 여기서 Main이 되는 객체 실행 흐름을 가져가되 InputView와 OutputView로 관리한다면 객체의 역할과 책임을 줄일 수 있을 것이라 생각한다. 

 

Operator

연산의 책임과 역할이 잘 묻어나는 객체이다. 

 

Application

 

테스트 코드 

 

코드 리뷰

객체가 별도의 상태를 갖고 있지 않다면 static하기 적용하는것도 좋을것 같다.

검증과 입력 부분을 분리한다. 객체에 최소한의 역할을 부여하는것이라 생각한다. 

 

결과

자바 객체 지향 관점에서 코드를 작성, TDD(Test Driven Developement), Stream, Enum, 메서드 참조형 등 Java에서 제공하는 기본적 문법과 활용에 대해 한번씩 더 보면 좋을것 같다.

'IT' 카테고리의 다른 글

넥스트스텝 - 레이싱 카 2단계  (0) 2022.01.30
넥스트스텝 - 레이싱 카 1단계  (0) 2022.01.29
git cherry-pick으로 rebase 완성하기  (0) 2022.01.28
centOS mirror  (0) 2021.12.16
Netflix OSS 이야기  (0) 2021.12.10