Skip to content

Java Playground 3차 미션 [좌표계산기 구현으로 TDD 익히기]

Notifications You must be signed in to change notification settings

leegwichan/java-coordinate-playground

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

좌표계산기

요구 사항

기능 요구사항

  • 사용자가 점에 대한 좌표 정보를 입력하는 메뉴를 구성한다.

    • 좌표 정보는 괄호"(", ")"로 둘러쌓여 있으며 쉼표(,)로 x값과 y값을 구분한다.
    • X, Y좌표 모두 최대 24까지만 입력할 수 있다.
    • 입력 범위를 초과하거나 형식이 다를 경우 에러 문구를 출력하고 다시 입력을 받는다.
  • 정상적인 좌표값을 입력한 경우, 해당 좌표에 특수문자를 표시한다.

  • 입력한 좌표 개수에 맞추어 결과를 출력한다, 좌표값과 좌표값 사이는 '-' 문자로 구분한다.

    • 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다.
      • 직선인 경우는 두 점 사이 거리를 계산해서 출력한다.
    • 좌표값을 세 개 입력한 경우, 삼각형으로 가정한다.
      • 삼각형인 경우는 삼각형의 넓이를 출력한다.
    • 좌표값을 네 개 입력한 경우, 해당 좌표는 좌표 x축, y축과 각 변이 평행한 직사각형 이어햐한다.
      • 직사각형이 아닌 경우 에러 문구를 출력하고 다시 입력을 받는다.
      • 직사각형인 경우는 삼각형의 넓이를 출력한다.
  • 실행 결과

좌표를 입력하세요.
(10,10)-(14,46)
[ERROR] 좌표는 1에서 24 사이의 정수만 입력하실 수 있습니다

좌표를 입력하세요.
(10,10)-(14,16)

24|
  |
22|
  |
20|
  |
18|
  |
16|                               •
  |
14|
  |
12|
  |
10|                   •
  |
 8|
  |
 6|
  |
 4|
  |
 2|
  |
  +ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
 0    2   4   6   8   10  12  14  16  18  20  22  24
 
두 점 사이의 거리는 6.40312423743285
  • 실행 결과2
(좌표 출력의 경우, 위와 동일)
(삼각형의 경우)
삼각형의 넓이는 20.0

(직사각형의 경우)
사각형 넓이는 25.0

프로그래밍 요구사항

  • 자바 코드 컨벤션을 지키면서 프로그래밍한다.
    • 기본적으로 Google Java Style Guide을 원칙으로 한다.
    • 단, 들여쓰기는 '2 spaces'가 아닌 '4 spaces'로 한다.
  • indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
    • 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
    • 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메소드)를 분리하면 된다.
  • 3항 연산자를 쓰지 않는다.
  • else 예약어를 쓰지 않는다.
    • 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
    • else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
  • 함수(또는 메서드)의 길이가 10라인을 넘어가지 않도록 구현한다.
    • 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들어라.
  • 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외
    • 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
    • UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
  • 모든 원시 값과 문자열을 포장한다.
  • 일급 컬렉션을 쓴다.
  • 줄여 쓰지 않는다(축약 금지)

기능 목록 및 commit 로그 요구사항

  • 기능을 구현하기 전에 README.md 파일에 구현할 기능 목록을 정리해 추가한다.
    • git의 commit 단위는 앞 단계에서 README.md 파일에 정리한 기능 목록 단위로 추가한다.
  • 참고문서: AngularJS Commit Message Conventions

About

Java Playground 3차 미션 [좌표계산기 구현으로 TDD 익히기]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%