계산기 피드백 공유 내용 👍
- 네이밍
- 변수명/ 메소드명
- 컨벤션 준수
- 예외 처리
RuntimeException
vsException
- 구분하여 사용- 복구할 수 없는 예외와 복구가능한 예외를 구분하여 사용하자
- try-catch 블락을 한 곳에서 처리할 수 있도록 작성
- 스프링의
@ControllerAdvice
클래스 구현 처럼!!
- 예외 발생이 필요한 테스트의 검증 방식
- Junit - AssertThrow VS AssertJ - assertThatThrownBy
- 검증에 사용하는 패키지의 통일
Code Formatting
: Ctrl + Alt + L / ⌘ + ⌥ + L
HashMap
에서 double brace initialization 사용 자제- Anti-Pattern!
- 일반적이지 않은 초기화 방식
- 내부적으로 새로운 클래스가 생성됨
- 메모리 누수의 위험
- 구현해야할 부분에
//TODO
처리 - 협업시 혼동 방지
- 테스트 메소드의 작성시 명확한 케이스 구분
@ParameterizedTest @CsvSource(value = { "1+2+3+", "틀린 식", }) void 식이_옳바르지_않으면_예외가_발생한다(String expression) { assertThatThrownBy(() -> parser.parse(expression)) .isInstanceOf(PatternSyntaxException.class) .hasMessageContaining("올바른 표현식이 아닙니다."); }
🔻🔻🔻
@Test void 파싱_실패_연산자로_끝자는_입력() { assertThatThrownBy(() -> parser.parse("1+2+3+")) .isInstanceOf(PatternSyntaxException.class) .hasMessageContaining("올바른 표현식이 아닙니다."); } @Test void 파싱_실패_한글이_들어간_입력() { assertThatThrownBy(() -> parser.parse("틀린 식")) .isInstanceOf(PatternSyntaxException.class) .hasMessageContaining("올바른 표현식이 아닙니다."); }
- 간단한 로직이라도 메서드를 통해 가독성을 높일 수 있음
무엇보다 객체지향
- 클래스의 역할을 적절하게 분배
작성하고 일년뒤에 보아도, 남이 보아도 알아볼 수 있는 코드를 짜자!!!
- 핵심 클래스와 메소드에 주석
- 예외를 발생시키는 상황에 대한 주석