null이 아닌, 빈 컬렉션이나 배열을 반환하라 클라이언트에서 컬렉션을 반환하는 메서드나, 배열을 반환하는 메서드를 호출했을 경우 만약 null을 반환한다면 클라이언트쪽에서 null체크를 감지하는 방어 코드를 항상 작성해주어야 합니다. 💡 예제 코드 아래 예제에서 getMembers 메서드는 컬렉션이 비어있는 경우 null을 반환하는 메서드입니다. 이 메서드가 어떤 문제를 발생시킬 수 있을까요? 답은 main 메서드에서 getMembers 메서드를 호출할 때 null 검사를 하는 방어 로직을 작성해야 합니다. 이처럼 방어 코드가 작성되지 않았을 경우 NPE가 발생하게 됩니다. public class Member { private static List members = new ArrayList(); pri..
가변인수는 신중히 사용하라 💡 가변인수란? 매개변수를 동적으로 받을 수 있는 방법이며, 자바 5부터 지원되기 시작했습니다. 매개변수에 ...을 사용하여 가변인수를 설정할 수 있고, 0개 이상의 인수를 받을 수 있습니다. 가변인수 메서드를 호출하면 가장 먼저 인수의 개수와 길이가 같은 배열이 만들어지고 생성된 배열에 인수들을 저장하여 메서드에 전달하며, 해당 메서드에서는 생성된 배열을 사용합니다. 이처럼 메서드를 호출할 때마다 새로운 배열을 생성해서 전달해주는데, 이 부분도 결국 비용이고 낭비일 수도 있습니다. public class Example { public static void main(String[] args) { varargs("H", "E", "L", "L", "O"); } public sta..
다중정의는 신중하게 사용하라 다중정의란 이름이 같은 메서드가 매개변수 타입이나 개수만 다르게 갖는 형태를 다중정의(오버로딩)이라 합니다. 💡 다중 정의 메서드(Overload) 예상으로는 Set, List등 매개변수에 맞춰서 결과값이 출력될거라 생각했지만, 실제로 수행해보면 Collection 매개변수 메서드만 실행이 됩니다. 이유는 다중정의된 메서드 중 어떠한 메서드를 호출할지는 컴파일타임에 정해지기 때문입니다. 즉 현재 컴파일 시점으로 보면 for(Collection c : collections)로 Collection 타입이기 때문에 Collection 매개변수를 갖는 메서드가 실행되었습니다. 런타임에는 타입이 매번 달라지겠지만 호출할 메서드를 선택하는데는 아무런 영향을 미치지 못합니다. 따라서 컴파..
메서드 시그니처를 신중히 설계하라 메서드 시그니처란 메서드의 이름과 매개변수의 순서, 타입, 개수를 의미합니다. 신기한 건 메서드의 리턴 타입과 예외처리는 메서드 시그니처가 아니라고 합니다. 💡 메서드 이름은 신중히 짓자 표준 명명 규칙 및 관례를 따르는게 좋습니다. 같은 패키지에 속한 다른 이름들과 일관되게 짓는게 좋습니다. 개발자 커뮤니티에서 널리 받아들여지는 이름을 사용하는게 좋습니다. 긴 이름은 피하는게 좋습니다. 애매하다면 자바 라이브러리의 API 가이드를 참고하는게 좋습니다. 💡 편의 메서드를 너무 많이 만들지 말자 메서드가 너무 많은 클래스 및 인터페이스는 오히려 익히고, 사용하고, 문서화하고, 테스트하고, 유지보수하기에 어려움을 가집니다. 클래스나 인터페이스는 자신의 각 기능을 완벽히 수행..
- Total
- Today
- Yesterday
- 공간 기반 아키텍처
- pipe and filter architecture
- JDK Dynamic Proxy와 CGLIB의 차이
- 자바 백엔드 개발자 추천 도서
- spring boot redis 대기열 구현
- java userThread와 DaemonThread
- spring boot excel download paging
- transactional outbox pattern spring boot
- 레이어드 아키텍처란
- pipeline architecture
- transactional outbox pattern
- redis sorted set으로 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링부트
- service based architecture
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot poi excel download
- @ControllerAdvice
- redis 대기열 구현
- 람다 표현식
- spring boot redisson sorted set
- 서비스 기반 아키텍처
- microkernel architecture
- spring boot redisson destributed lock
- spring boot redisson 분산락 구현
- space based architecture
- spring boot 엑셀 다운로드
- redis sorted set
- java ThreadLocal
- spring boot excel download oom
- polling publisher spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |