@Override 애너테이션을 일관되게 사용하라 @Override는 메서드 선언에만 달 수 있으며, 이 애너테이션이 선언되었다는 것은 상위 타입의 메서드를 재정의했음을 의미합니다. 🧨 잘못된 코드 Set은 중복을 허용하지 않으니 10개가 출력될거 같지만 실상은 그렇지 않습니다.(110개 출력) 이러한 문제가 발생하는 이유는 Food 클래스의 equals는 Object 클래스의 equals 메서드를 재정의한게 아닌 오버로딩일 하였기 때문입니다. Object 클래스의 equals는 매개변수로 Object 타입을 받습니다. 하지만 Food 클래스의 equals 메서드는 Food 타입을 받고 있습니다. 이는 재정의가 아닌 다중정의가 된것이고 Set에서는 Object의 equals를 사용하여 객체 식별성을 비교하..
명명패턴보다 애너테이션을 사용하라 JUnit은 버전 3까지 테스트 메서드 이름을 test로 시작하게끔 하였습니다. 🧨 단점 오타에 취약합니다. JUnit 3버전에서는 테스트 메서드명을 tsetSafeOverride로 지어버리면 무시하고 테스트를 진행하지 않습니다. 올바른 프로그램 요소에서만 사용되리라는 보장이 없습니다. 메서드가 아닌 클래스명을 TestSafeOverride로 지어 내부의 메서드가 테스트되길 기대할 수 있지만 JUnit은 클래스명에는 관심이 없으므로 테스트가 실행되지 않습니다. 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없습니다. 특정 예외를 던져야 발생하는 테스트가 있다는 가정하에 기대하는 예외 타입을 테스트에 매개변수로 전달해야하는데 방법이 마땅치 않습니다. 💡 해결책 - 애너테..
확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 열거 타입 자체는 확장할 수 없지만, 인터페이스와 인터페이스를 구현하는 열거 타입을 통해 시너지를 낼 수 있습니다. 💡 타입 안전 열거 타입 JDK 1.5 이전에 Enum이 없을 때 사용하던 방식입니다. @ToString public class Direction { private final String location; public static final Direction NORTH = new Direction("NORTH"); public static final Direction SOUTH = new Direction("SOUTH"); public static final Direction EAST = new Direction("EAST"); p..
비트 필드 대신 EnumSet을 사용하라 비트 필드란 비트별 OR을 사용해 여러 상수를 하나로 모은 집합을 말합니다. 💡비트 필드 클래스 예제 아래와 같은 비트 필드 열거 상수가 있다는 가정하에 text.applyStyles(STYLE_BOLD | STYPE_ITALIC); 이처럼 만들어진 집합을 비트 필드라고 합니다. 이러한 비트 필드를 사용하면 비트 연산을 사용해 합집합과 교집합 같은 집합 연산을 효율적으로 수행할 수 있습니다. 문제점 정수 열거 상수의 단점을 그대로 가지고 있습니다. 비트 필드 값이 그대로 출력되면 해석하기 어렵습니다. 비트 필드 하나에 녹아 있는 모든 원소를 순회하기도 까다롭습니다. 최대 몇 비트가 필요한지 API작성 시 미리 예측해 적절한 타입을 선택해야합니다.(ex: int o..
- Total
- Today
- Yesterday
- 공간 기반 아키텍처
- spring boot redisson destributed lock
- service based architecture
- microkernel architecture
- pipeline architecture
- spring boot redisson sorted set
- @ControllerAdvice
- redis 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- transactional outbox pattern
- 트랜잭셔널 아웃박스 패턴 스프링부트
- 서비스 기반 아키텍처
- space based architecture
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- java userThread와 DaemonThread
- 자바 백엔드 개발자 추천 도서
- spring boot redis 대기열 구현
- 람다 표현식
- redis sorted set으로 대기열 구현
- redis sorted set
- 레이어드 아키텍처란
- spring boot poi excel download
- polling publisher spring boot
- spring boot 엑셀 다운로드
- java ThreadLocal
- spring boot redisson 분산락 구현
- spring boot excel download paging
- transactional outbox pattern spring boot
- spring boot excel download oom
- pipe and filter architecture
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |