ordinal 메서드 대신 인스턴스 필드를 사용하라 🧨 ordinal 메서드의 문제 Enum은 0부터 인덱스가 시작하며, 그렇기 때문에 예제코드에서 + 1를 해주고 있습니다. 상수 선언의 순서를 바꾸는 순간 개발자가 의도하지 않은 쪽으로 흘러갈 수 있습니다. 예를들어 DB에 해당 Enum을 ordinal로 저장 시 추후에 순서가 변경된다면 기존 DB에 저장되어 있는 순서와 일치하지 않으니 문제가 발생할 수 있습니다. 또한 중간에 값을 비울 수 없습니다. public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET, NONET, DECTET; public int numberOfMusicians() { return ordin..
int 상수대신 열거 타입을 사용하라 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입입니다. 💡 정수형 열거 패턴의 단점 타입 안전을 보장할 수 없으며 표현력이 좋지 않습니다. 오렌지를 건네야할 메서드에 사과를 보내고 동등 연산자(==)러 비교하더라도 컴파일러는 아무런 경고 메시지를 출혁하지 않습니다. 자바에서 별도의 namespace를 지원하지 않기 때문에 접두어(APPLE, ORANGE)를 붙어야합니다. 단순히 상수를 나열한 것뿐이기 때문에 깨지기 쉽습니다. 컴파일 시 그 값이 클라이언트 파일에 그대로 새겨지는데, 상수의 값이 바뀌면 해당 클라이언트도 다시 컴파일해야 합니다. 이러한 단점으로 정수 열거 패턴의 변형인 문자열 열거 패턴도 있지만 이 역시 좋지는 않습니..
타입 안전 이종 컨테이노를 고려하라 제네릭은 Set, Map등의 컬렉션이나 ThreadLocal, AtomicReference등의 단일원소 컨테이너에서도 흔히 사용됩니다. 이런 모든 쓰임에서 매개변수화되는 대상은 원소가 아닌 자기자신입니다. 따라서 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수는 제한이 되는데, 이러한 상황에서 제네릭을 조금 더 유연하게 사용하고자 나온 패턴이 타입 안전 이종 컨테이너 패턴입니다. 💡 타입 안전 이종 컨테이너 패턴이란? 컨테이너 대신 키를 매개변수화한 다음 컨테이너에 값을 넣거나 뺄 때 매개변수화한 키를 함께 제공하는 방식입니다. 이렇게 된다면 제네릭 타입 시스템이 값의 타입이 키와 같음을 보장해줄것입니다. 💡 예제 Class 클래스는 제네릭 클래스이기 때문에 Cla..
제네릭과 가변인수를 함께 쓸 때는 신중하라 가변인수 메서드는 메서드에 넘기는 인수의 갯수를 클라이언트가 조절할 수 있게해줍니다. 하지만 가변인수를 받는 메서드측에서는 가변인수를 담기위한 배열이 자동적으로 만들어지는데 이러한 가변인수 매개변수에 제네릭이나 매개변수화 타입이 포함되면 컴파일 경고가 발생하게 됩니다. 이는 제네릭이나 매개변수화 타입은 실체화가 불가능한 타입이기 때문입니다. 또한 매개변수화 타입의 변수가 다른 타입의 객체를 참조하게 되면 힙 오염이 발생하게 됩니다. 이는 대부분 제네렉과 매개변수화 타입은 실체화가 불가능한 타입이기 때문에 생기는 문제로 메서드를 선언할 때 실체화 불가 타입으로 가변인수 매개변수를 선언할 경우 컴파일러가 경고를 내보내는데, 경고 내용은 매개변수화 타입의 변수가 타입..
- Total
- Today
- Yesterday
- pipeline architecture
- spring boot redisson destributed lock
- 자바 백엔드 개발자 추천 도서
- spring boot redisson sorted set
- 서비스 기반 아키텍처
- spring boot 엑셀 다운로드
- java userThread와 DaemonThread
- spring boot redis 대기열 구현
- spring boot excel download paging
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- JDK Dynamic Proxy와 CGLIB의 차이
- redis sorted set
- redis 대기열 구현
- 레이어드 아키텍처란
- transactional outbox pattern spring boot
- space based architecture
- 공간 기반 아키텍처
- spring boot excel download oom
- transactional outbox pattern
- spring boot redisson 분산락 구현
- polling publisher spring boot
- @ControllerAdvice
- pipe and filter architecture
- redis sorted set으로 대기열 구현
- service based architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- java ThreadLocal
- 람다 표현식
- microkernel architecture
- spring boot poi excel download
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |