반응형
- 과제 요약
- 사칙연산 식이 들어오면 " " 으로 split하여 계산된 결과값 return
- 사칙연산 기호가 잘 못 들어오거나 식이 없으면 exception
- PR 주요 내용
- enum class을 활용하자
- function 뿐만이 아니라 class에도 기능이 집중되는 것을 방지하자
- 추상화를 활용하자
- stream을 쓰면 for문과 if를 섞어 쓰는 것을 확 줄일 수 있다.
- enum class을 활용하자
- 사칙 연산 기호에 대해 else를 쓰지 말라고 해서 switch case를 통해 체크해서 사칙연산 function을 선택하여 돌아가게 만들었음
- calculate라는 function을 가진 interface Operator을 만들어서 enum에 Operator를 받는 사칙연산 class 4개를 부여함
그리고 단순히 enum만 만들어준 것이 아닌 enum class안에 calculate function을 만들어서 enum stream filter로 바로 찾아 오버라이드 한 calculate를 실행하게 만들었음 - 이게 진짜 개쩔었다.
- function 뿐만이 아니라 class에도 기능이 집중되는 것을 방지하자
- calculator class를 만들어서 function으로 '들어온 값을 validate하여 list로 만드는 작업'/'계산하는 작업'을 function으로만 나누어 넣었느데 아예 class로 나누어 작성하였고 calculator 자체는 기능을 가지고 있지 않고 각각 class에 나누어진 기능을 정리하여 호출만 하는 구조로 만들었음 (이렇게 해야 근데 진짜 객체지향에 가까워지긴 하는 듯)
- 추상화를 활용하자
- 첫번째 내용과 이어짐
- stream을 쓰면 for문과 if를 섞어 쓰는 것을 확 줄일 수 있다.
- stream(values()).filter(~~~).findFirst().orElseThrow(IllegalArgumentException::new).calculate(a, b);
- 로 for if 중첩하여 사용하는거 한큐에 해결함
반응형
'Backend 언어 > NextStep TDD' 카테고리의 다른 글
TDD를 하는 이유 (0) | 2020.11.15 |
---|---|
2주차 Q&A (0) | 2020.11.04 |