TDD란?프로덕션 코드를 먼저 작성하는 것이 아닌 테스트 코드를 먼저 작성한다. RED : 테스트에 실패하는 코드를 작성한다.테스트할 프로덕션 코드가 없기 때문에 에러가 발생한다.GREEN : 테스트를 통과할 수 있도록 최소한의 코드만 작성한다.프로덕션 코드가 엉터리여도 된다. 단순히 테스트 통과만을 위한 프로덕션 코드를 작성한다.BLUE : 테스트 통과는 유지하면서 프로덕션 코드를 개선한다. TDD - REDcalculateTotalPrice()는 프로덕션에서 실제로 사용할 코드에 대한 테스트 코드를 작성한다. CafeKiosk 클래스의 calculateTotalPrice() 메서드는 아직 작성되지 않은 상태이다.@Testvoid calculateTotalPrice() { CafeKiosk ca..
사용자의 입력은 믿을 수 없는 정보이다.사용자 입력에서 발생할 수 있는 예외 케이스를 고민해야 한다. 그리고 예외 케이스에 대한 검증이 필요하다.ex) 이메일 입력창에 특수 문자를 입력할 수 있다. null을 대하는 자세→ 항상 NPE를 방지하는 방향으로 경각심을 가지고 코드를 작성한다.→ return null을 자제한다. NPE 발생 여지를 만든다.→ 대안책으로 Optional이 있다. Optional에 대하여→ Optional은 비싼 객체다. 꼭 필요한 상황에서만 반환 타입으로만 사용한다. 반환 타입이 아닌 파라미터로 받지 말자.→ Optional은 분기 케이스가 존재한다.Optional 자체가 null인지Optional에 담긴 데이터가 null인지따라서 파라미터로 Optional을 받아서는 안 된다..
@Data 애너테이션포함하는 애너테이션 : @Getter, @Setter, @RequireArgsConstructor, @ToString, @EqualsAndHashCode/** * @see Getter * @see Setter * @see RequiredArgsConstructor * @see ToString * @see EqualsAndHashCode*/@Target({ElementType.TYPE})@Retention(RetentionPolicy.SOURCE)public @interface Data { String staticConstructor() default "";} @Data 애너테이션이 포함하는 애너테이션들에 대해서 알아보자. @Setter는 수정하면 안 되는 값을 수정하게 만든다.E..