728x90
좌표계산기 구현
좌표계산기(선 길이)
기능 요구사항
- 사용자가 점에 대한 좌표 정보를 입력하는 메뉴를 구성한다.
- 좌표 정보는 괄호"(", ")"로 둘러쌓여 있으며 쉼표(,)로 x값과 y값을 구분한다.
- X, Y좌표 모두 최대 24까지만 입력할 수 있다.
- 입력 범위를 초과할 경우 에러 문구를 출력하고 다시 입력을 받는다.
- 정상적인 좌표값을 입력한 경우, 해당 좌표에 특수문자를 표시한다.
- 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다.
- 직선인 경우는 두 점 사이 거리를 계산해서 출력한다.
실행 결과
좌표를 입력하세요.
(10,10)-(14,15)
두 점 사이 거리는 6.403124
좌표계산기(사각형 면적)
요구사항
- 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다.
- 좌표값을 네 개 입력한 경우, 네 점을 연결하는 사각형으로 가정한다.
- 네 점이 뒤틀어진 사다리꼴이나 마름모는 제외하고 직사각형만 허용하도록 검사한다.
- 사각형인 경우 사각형의 넓이를 계산해서 출력한다.
실행 결과
좌표를 입력하세요.
(10,10)-(22,10)-(22,18)-(10,18)
사각형 넓이는 96
좌표계산(삼각형 면적)
요구사항
- 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다.
- 좌표값을 세 개 입력한 경우, 세 점을 연결하는 삼각형으로 가정한다.
- 삼각형인 경우 삼각형의 넓이를 계산해서 출력한다.
실행 결과
좌표를 입력하세요.
(10,10)-(14,15)-(20,8)
삼각형 넓이는 29.0
프로그래밍 요구사항
- 상속과 인터페이스를 적용해 중복 코드를 제거한다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다.
- 기본적으로 Google Java Style Guide을 원칙으로 한다.
- 단, 들여쓰기는 '2 spaces'가 아닌 '4 spaces'로 한다.
- indent(인덴트, 들여쓰기) depth를 2를 넘지 않도록 구현한다. 1까지만 허용한다.
- 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
- 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다.
- 3항 연산자를 쓰지 않는다.
- else 예약어를 쓰지 않는다.
- else 예약어를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- 힌트: if문에서 값을 반환하는 방식으로 구현하면 else 예약어를 사용하지 않아도 된다.
- 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외
- 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
- UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
- 함수(또는 메서드)의 길이가 10라인을 넘어가지 않도록 구현한다.
- 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들어라.
- 모든 원시 값과 문자열을 포장한다
- 줄여 쓰지 않는다(축약 금지).
- 일급 컬렉션을 쓴다.
이번 과제에서 중요했던 점
- 상속과 인터페이스 사용
- Factory Method 사용
마무리 느낌점
피드백 전 Factory Method를 사용하려고 했지만 생각대로 설계가 되지 않았다
어떤 식으로 사용해야할지 아직 감이 완벽하게 오진않는다
피드백을 확인 한 뒤 피드백 내용과 다른 사람들이 작성한 코드를 분석해가며 다시 공부했다
아직도 creator 쪽은 살짝 어려운 것 같다ㅜ
좀 많이 헤매긴했지만 잘 해결 된 것 같다
변경 전 branch: before-feedback
변경 후 branch: after-feedback
728x90
'개발 교육 > 플레이그라운드 with TDD, 클린코드' 카테고리의 다른 글
Java8 실습 - Lamda, Stream, Optional (0) | 2022.04.07 |
---|---|
Factory Method 실습 - 연료 주입 (0) | 2022.03.16 |
자동차 경주 게임 구현 - 리팩토링 재시도 (0) | 2022.03.14 |
자동차 경주 게임 구현 (0) | 2022.03.12 |
TDD/리팩토링 실습 - 문자열 덧셈 계산기 (0) | 2022.03.09 |