다중정의는 신중하게 사용하라 다중정의란 이름이 같은 메서드가 매개변수 타입이나 개수만 다르게 갖는 형태를 다중정의(오버로딩)이라 합니다. 💡 다중 정의 메서드(Overload) 예상으로는 Set, List등 매개변수에 맞춰서 결과값이 출력될거라 생각했지만, 실제로 수행해보면 Collection 매개변수 메서드만 실행이 됩니다. 이유는 다중정의된 메서드 중 어떠한 메서드를 호출할지는 컴파일타임에 정해지기 때문입니다. 즉 현재 컴파일 시점으로 보면 for(Collection c : collections)로 Collection 타입이기 때문에 Collection 매개변수를 갖는 메서드가 실행되었습니다. 런타임에는 타입이 매번 달라지겠지만 호출할 메서드를 선택하는데는 아무런 영향을 미치지 못합니다. 따라서 컴파..
메서드 시그니처를 신중히 설계하라 메서드 시그니처란 메서드의 이름과 매개변수의 순서, 타입, 개수를 의미합니다. 신기한 건 메서드의 리턴 타입과 예외처리는 메서드 시그니처가 아니라고 합니다. 💡 메서드 이름은 신중히 짓자 표준 명명 규칙 및 관례를 따르는게 좋습니다. 같은 패키지에 속한 다른 이름들과 일관되게 짓는게 좋습니다. 개발자 커뮤니티에서 널리 받아들여지는 이름을 사용하는게 좋습니다. 긴 이름은 피하는게 좋습니다. 애매하다면 자바 라이브러리의 API 가이드를 참고하는게 좋습니다. 💡 편의 메서드를 너무 많이 만들지 말자 메서드가 너무 많은 클래스 및 인터페이스는 오히려 익히고, 사용하고, 문서화하고, 테스트하고, 유지보수하기에 어려움을 가집니다. 클래스나 인터페이스는 자신의 각 기능을 완벽히 수행..
적시에 방어적 복사본을 만들라 자바는 안전한 언어입니다. 네이티브 메서드를 사용하지 않으니 C, C++ 같이 안전하지 않은 언어에서 흔히보는 버퍼 오버런, 배열 오버런, 와일드 포인터 같은 메모리 충돌 오류로부터 안전합니다. 자바로 작성한 클래스는 시스템의 다른 부분에서 무슨 짓을 하든 그 불변식이 지켜집니다. 메모리 전체를 하나의 거대한 배열로 다루는 언어안에서는 누릴 수 없는 강점입니다. 💡 문제가 발생하는 상황 아래 Period 객체는 생성자에서 유효성 검사를 하고 있습니다. 하지만 main 메서드에서 객체 생성 후에 값을 수정하고 있어 문제가 발생할 수 있습니다. 자바 8 이후로는 Date 클래스 대신 불변인 Instant를 사용하거나 LocalDateTime 또는 ZonedDateTime을 사용..
매개변수가 유효한지 검사하라 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바랍니다. 예를 들어 인덱스의 값은 음수여서는 안되고, 객체 참조는 NULL이어서는 안됩니다. 이런식의 제약은 반드시 문서화해야하며, 메서드 몸체가 시작되기 전에 검사해야 합니다. 오류는 가능한 한 빨리 잡아야하며, 오류를 발생한 즉시 잡지 못하면 해당 오류를 감지하기 어려워지고, 감지하더라도 오류의 발생 지점을 찾기 어려워집니다. 💡 매개변수 검사를 제대로 하지 않은 경우 메서드가 수행되는 중간에 모하한 예외를 던지며 실패할 수 있습니다. 더 나쁜 상황은 메서드가 잘 수행되지만 잘못된 결과를 반환하는 상황이 발생할 수도 있습니다. 더 좋지 않은 상황은 메서드는 문제없이 수행됐지만 어떤 객체를 이상한 상태로..
- Total
- Today
- Yesterday
- transactional outbox pattern
- redis 대기열 구현
- transactional outbox pattern spring boot
- spring boot redisson 분산락 구현
- 람다 표현식
- spring boot excel download paging
- JDK Dynamic Proxy와 CGLIB의 차이
- pipeline architecture
- 레이어드 아키텍처란
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot poi excel download
- 서비스 기반 아키텍처
- microkernel architecture
- redis sorted set
- pipe and filter architecture
- java userThread와 DaemonThread
- 공간 기반 아키텍처
- @ControllerAdvice
- spring boot redis 대기열 구현
- spring boot redisson sorted set
- service based architecture
- polling publisher spring boot
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- redis sorted set으로 대기열 구현
- 자바 백엔드 개발자 추천 도서
- space based architecture
- spring boot 엑셀 다운로드
- java ThreadLocal
- spring boot excel download oom
- spring boot redisson destributed lock
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |