오늘 오전에는 내가 담당하는 부분 중 일부를 테스트 코드 작성해봤다. 신기하다,, ㅋㅋ
@DisplayName("고객이 예약 조회 시 고객의 예약만 조회")
@Test
void getReservationsByUser() {
// given (상황)
Room room = new Room(1, new HashSet<>(), "single room", 33.0, 10000);
Person user1 = new Person("user1", "111", "010-0000-0000", "홍길동", Role.CUSTOMER, 20000);
Person user2 = new Person("user2", "222", "010-0000-1111", "이순신", Role.CUSTOMER, 15000);
Reservation user1Reservation1 = new Reservation(room, user1, LocalDateTime.of(2023,10,12, 0, 0, 0), 10000);
Reservation user1Reservation2 = new Reservation(room, user1, LocalDateTime.of(2023,10,13,0,0,0) , 10000);
Reservation user2Reservation1 = new Reservation(room, user2, LocalDateTime.of(2023,10,14,0,0,0), 10000);
reservationRepository.save(user1Reservation1);
reservationRepository.save(user1Reservation2);
reservationRepository.save(user2Reservation1);
GetReserveListRequest user1Request = new GetReserveListRequest(user1);
GetReserveListRequest user2Request = new GetReserveListRequest(user2);
// when (실행)
GetReservationResponse user1Response = hotelService.getReservations(user1Request);
GetReservationResponse user2Response = hotelService.getReservations(user2Request);
// then (결과)
assertThat(user1Response.reservationList().size()).isEqualTo(2);
assertThat(user2Response.reservationList().size()).isEqualTo(1);
}
어제 TIL 쓰고도 계속 TDD 책 읽어서 Mockito도 배웠는데 그것도 나중에 써봐야 겠다.
개인 과제 피드백이 왔다. 나는 코드에 코멘트를 남겨주는 식일 줄 알았는데 메일에다가 글로 와서 조금은 아쉬웠지만,, 그래도 110명이나 되니 이해는 된다. 팀플젝땐 해주시겠지..?
리드미랑 위키랑 커밋 컨벤션 신경 쓴거 칭찬 받으니 기분이 좋더라 ㅋㅋ
코드 가독성을 신경을 꽤나 신경 쓰고 있어서 메서드 명명, 띄어쓰기나 들여쓰기 등도 언급해줘서 좋았다.
다만, 내가 생각해도 너무 과하게 클래스들이 분리되어 있고 다른 분들 대비 클래스 수가 너무 많았다. 너무 패턴으로 해결하려고 했어서, 피드백을 받으면 고쳐보려 했으니 주말에 한번 해봐야겠다.
Order 클래스도 요구사항에 있어서 그런거지만,, 다른 클래스를 줄이면서도 Order 클래스의 기능을 더 추가해볼 수 있는지 더 고려해봐야겠다.
그리고 주석은.. 클린 코드에서는 코드와 중복되는 주석은 자제하라고 해서 최대한 코드 가독성에 신경을 써서 작성하지 않았는데 ㅠㅠ,, 다른 분들이 받아본 피드백 중에는 클래스 레벨에서의 주석을 써주라고 했다고 들었는데 그것도 좋은 것 같다. 또 구글 컨벤션에서는 javadoc 쓰라고 하던데 인텔리제이에 적용하면서 써보는 것도 좋을 것 같다.
오후에는 이펙티브 자바를 읽었다. 근데 책을 읽으면서 책 내용대로 코드를 작성해보는데 책에선 안 된다는데 나는 되는거다...??!!?!
심지어 구글링 해봐도 모두 다 책 그대로 받아 적는지 아무런 의심도 안 해..
그래서 자바 공식 문서를 뒤져서 봐보니 뭐야 된다고 했다. 심지어 자바8 문서였는데 이거 뭐냐고...
public class 지역_클래스_테스트 {
void 메서드() {
class 지역_클래스 {
static final int 정적_멤버_변수 = 10;
public 지역_클래스() {
// 정적 멤버 가질 수 있는데?
System.out.println("로컬 클래스 내의 정적 멤버는 다음과 같다 : " + 정적_멤버_변수);
}
public static void 정적_메서드() {
System.out.println("정적 메서드 실행");
}
}
// 이름이 있고,
new 지역_클래스(); // 반복 사용 가능
new 지역_클래스(); // 반복 사용 2
지역_클래스.정적_메서드();
}
public static void main(String[] args) {
지역_클래스_테스트 인스턴스 = new 지역_클래스_테스트();
인스턴스.메서드();
}
}
로컬 클래스 내의 정적 멤버는 다음과 같다 : 10
로컬 클래스 내의 정적 멤버는 다음과 같다 : 10
정적 메서드 실행
밑은 내가 노션에 정리 중인 거였는데 4번째 불릿리스트는 책에 나온 내용이고, 그 하위가 내가 찾아보면서 고쳐쓴 거다.
⭐ 4. 지역 클래스
- 지역 클래스는 블록 안에 정의된 클래스로, 4가지 중첩 클래스 중 가장 드물게 사용된다.
- 지역 클래스는 지역 변수를 선언할 수 있는 곳이면 실질적으로 어디서든 선언할 수 있고, 유효 범위도 지역 변수와 같다.
- 멤버 클래스처럼 이름이 있고, 반복해서 사용할 수 있다.
- 익명 클래스처럼 비정적 문맥에서 사용될 때만 바깥 인스턴스를 참조할 수 있으며, 정적 멤버는 가질 수 없으며, 가독성을 위해 짧게 작성해야 한다.
- 정적 멤버를 가질 수 없다고 되어 있지만, 사실 공식 문서에서도 가질 수 있다고 되어있다.
- 다만 상수 변수만 가능하며, 상수 변수란 compile-time constant expression으로 초기화 되거나 final로 선언된 기본형, String, 산술연산 이다.
'TIL ✍️' 카테고리의 다른 글
23년 10월 30일(월요일) - 21번째 TIL (0) | 2023.10.30 |
---|---|
23년 10월 28일(토요일) - 20번째 TIL (0) | 2023.10.28 |
23년 10월 26일(목요일) - 18번째 TIL (1) | 2023.10.26 |
23년 10월 25일(수요일) - 17번째 TIL (1) | 2023.10.25 |
23년 10월 24일(화요일) - 16번째 TIL (1) | 2023.10.24 |