티노는 학교 버스를 너무 좋아해요!
버스에 사랑에 빠진 티노는 하루종일 버스를 기다린답니다!
티노를 위한 버스 알림 서비스를 만들어보아요!
위 표에 있는 데이터는 기본 데이터이다.
즉, 위 데이터를 기본 세팅 후에 진행한다.
상시 운행중인 시간은 5분 단위로 간격을 두고 추가한다.
예외 메시지는 자율적으로 작성한다.
제발 여기다 push/merge 하지 마세요!! fork 한 후에 각자 닉네임으로 branch 파서 제작하고 PR 날려주세용
착한 우리 부원들은 문제 끝까지 읽고 풀기!!! 제발~
{
"startPosition": "school",
"departureTime": "10:30"
}
{
"id": 6,
"startPosition": "school",
"startAt": "10:30"
}
- 시작지가 같으며, 기존에 운행하는 버스와 출발 시간이 5분 미만으로 차이가 나면 안 됨. ex) 기존에 10:30분 출발 버스가 있으면, 1:34분에 출발하는 버스는 추가할 수 없음
[
{
"id": 5,
"startAt": "16:30"
},
{
"id": 6,
"startAt": "16:40"
},
{
"id": 7,
"startAt": "16:50"
}
]
[
{
"id": 5,
"startAt": "12:30"
},
{
"id": 6,
"startAt": "12:40"
},
{
"id": 7,
"startAt": "12:50"
}
]
[
{
"id": 5,
"startAt": "16:30"
},
{
"id": 6,
"startAt": "16:40"
},
{
"id": 7,
"startAt": "16:50"
},
{
"id": 8,
"startAt": "17:00"
},
{
"id": 9,
"startAt": "17:10"
}
]
- start-position : 필수
- start-at : 선택, 기본값 = 현재시간
- page : 선택, 기본값 = 3
- 파라미터값이 정해진 형식이 아니라면 예외처리
{
"startPosition": "school",
"departureTime": "10:30"
}
{
"id": 5,
"startPosition": "school",
"departureTime": "10:30"
}
- 만약 id에 해당하는 버스가 없을 시 예외처리 해야
- 시작지가 같으며, 기존에 운행하는 버스와 출발 시간이 5분 미만으로 차이가 나면 안 됨. ex) 기존에 10:30분 출발 버스가 있으면, 10:34분에 출발하는 버스는 추가할 수 없음
- 만약 id에 해당하는 버스가 없을 시 예외처리 해야
- java 11 이상
- gradle
- spring-boot 2.7
- spring-boot-starter-data-jpa
- spring-boot-starter-validation
- lombok
- h2
- 손보다 머리로 먼저 하세요
- 머리로 먼저 푼 다음 -> 기능 목록 작성
- 처음부터 TODO 를 100% 완벽하게 만들 수 없어
- 최대한 기능 목록 먼저 만들고, 구현하면서 유동적으로 변경, 추가 가능
- 메서드 길이를 최대한 짧게 (최대 10)
- 파라미터 개수도 최소화
- MVC 모듈 분할
- controller - service - repository 단계 분할
- 일급 컬렉션 생성
- Exception Handler 생성
- else, switch, ? 금지
- 들여쓰기는 최대 2까지만 서용
class A {
void hello () {
while {
if {
// 여기까지만 허용
}
}
}
}
- 나만의 단위 테스트
- 단위 구현 당 커밋 나누기, 커밋 규칙 준수
- method(주요 클래스) : 설명
- method :
- test
- feat
- fix
- chore
- docs
- refactor
-
리펙터링 필수
-
미리 깔끔하게 짜면 좋지만, 일단 구현 -> 후 리펙터링도 가능
-
이것까지 바라지는 않는다 왜냐면 나도 못함
- 기능 목록 작성 이후, 단위 테스트를 먼저 만든다, 그 이후 테스트에 맞춰서 구현 : TDD -> 찐또배기로 하면 ㅈㄴ 어려워
- TDD 연습하는데 이런 문제가 더 없음
- 너의 목적이 TDD가 아니라 생각, 궁극적 목적 : 객체지향적 설계 : TDD 욕심 일단 부리지 말고, 객체지향적으로 먼저 접근해보고
- 그 이후 자신감이 붙으면 TDD도 트라이 해보셈
- 앵간하면 배열 ㄴㄴ 리스트 쓰세용, 추가적으로 람다 스트림 변환 가능하면 람스 쓰세용, 반복문 쓰지 마시고(앵간하면)
-
궁극적 목표 : 객체지향적 설계 - 클린코드
-
만약에 자신감이 붙는다?
- 람다 스트림
- TDD
-
무지성 풀이 : 30분 컷
-
위에 규칙 다 지키면 솔직히 10시간 오바 쌉가능
-
다풀고 리뷰 원하면 수다방에 편하게 말씀해주세용
-
문제 오류 혹은 더 나은 방향으로 수정 가능하면 PR 편하게 날려주세용