전역 변수 vs 지역 변수
: 전역 변수를 가급적 사용하지 않는 게 좋다는 이야기를 들어서 고민했는데,
내가 만든 프로그램은 아주 간단하고 작아서 사용하는 게 크게 문제가 되지는 않는다.
그리고 해당 클래스 내에서만 사용하며, 해당 클래스의 여러 private method에서 사용하는 변수라면 클래스 변수여도 무방하다고 생각.
final을 붙여서 사용하면 더 안전한 이용이 될 것.
https://thalals.tistory.com/365
테스트 코드 작성했다.
테스트는 빠르고 반복적으로 실행 가능한 것이 중요하므로, 내가 작성한 비즈니스 로직만을 단위 테스트로 검증하도록 하였다.
컨트롤러 테스트나, 통합 테스트 코드 작성도 하면 좋겠지만 시간 낭비인 측면이 있다고 생각해서 패스. 결국엔 Postman과 Test DB를 이용해서 실험해봐야 하기도 하고,,
로직은 최대한 검증할 수 있는 부분들을 골라냈고, 파라미터를 다르게 주어서 실패하는 테스트도 확인했다.
@ParameterizedTest
@DisplayName("월 마지막 날짜 구하기 테스트")
@CsvSource(value = {"2023-06, 30", "2023-07, 31", "2023-02, 28", "2024-02, 29"})
void getLastDayTest(String input, int expected){
Calendar calendar = Calendar.getInstance();
int year = Integer.parseInt(input.substring(0,4));
int month = Integer.parseInt(input.substring(5,7));
calendar.set(year, month - 1, 1);
Assertions.assertEquals(expected, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
}
오늘 DTO에 유효성 검사 추가할 때, 정규식 이용하려고 했는데 실패했다.
날짜 포맷이 이미 인터넷에 나와있어서 yyyy-mm-dd 형식의 정규식은 찾았는데,
그걸 배열로 입력 가능하게 하는 부분에서 막혔다.
정규식 어렵다. 이런 부분은 프론트 단에서 GUI로 사용자에게 명시해주고 로직으로 걸러주는 게 편한 듯.