본문 바로가기

전체 글63

[item 30] 이왕이면 제네릭 메서드로 만들라. 클래스와 마찬가지로, 메서드도 제네릭으로 만들 수 있다. 로 타입과 제네릭 메서드의 차이점을 이해하고, 제네릭 메서드로 변환했을 때 타입 안정성을 갖는 이점을 이해해보자.로 타입 사용 로(raw) 타입을 사용하고 있어 컴파일 시 경고가 발생한다. 로 타입은 제네릭 타입에서 타입 매개변수를 지정하지 않은 상태를 의미하며, 이는 타입 안전성을 저해하고 예상치 못한 오류를 유발할 수 있다. 따라서 제네릭 메서드로 변환하여 타입 안전성을 확보하는 것이 좋다. 제네릭 메서드로 변환된 코드 경고를 없애려면 위와 같이 타입 매개변수 목록을 , 반환타입을 Set으로 명시하면 된다. ✅ 제네릭 메서드 만들기제네릭 메서드는 메서드 선언 시 타입 매개변수를 명시하여, 해당 메서드가 다양한 타입의 매개변수.. 2025. 2. 4.
[item 29] 이왕이면 제네릭 타입으로 만들라. 제네릭 타입을 만들기 전에, 제네릭이 없는 Stack 코드를 살펴보자. import java.util.Arrays;import java.util.EmptyStackException;public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] .. 2025. 2. 4.
게시물 검색조건 타입에 대한 고민 이번 시간에는 게시물 검색 조건을 ENUM 타입으로 설계하여 개선한 사례를 공유하고자 한다.프로젝트 요구사항팀 프로젝트에서는 피드에 대한 검색 조건이 매우 다양했으며, 특히 지역과 동물 조건이 세부적으로 나뉘어 있었다. 아래는 피그마에 작성된 화면 디자인 일부로, 지역/동물 조건을 조합해 검색할 수 있도록 구현해야 했다. 포인앤드 어플과 같이 검색할 수 있도록 구현해야 한다. 검색조건 1) 지역 설정 검색조건 2) 지역 - (구) 검색조건 3) 동물 검색조건 4) 품종초기 ERD 설계프로젝트 초반에는 아래와 같이 ERD를 작성했었다. 동물, 품종, 중성화 여부, 성별, 지역 정보를 모두 문자열 타입(varchar)으로 선언했다. ENUM 타입을 활용하려던 이유‘지역(시/도)’, ‘동물’, .. 2025. 1. 18.
검색 쿼리 리팩토링 이번 시간에는 페이징 기능을 구현하며 상품 검색에 필요한 조회 성능을 개선한 과정을 정리하고자 합니다. 기존 검색 구현 방식에서는 상품과 연관된 데이터를 개별적으로 모두 조회한 후, Stream을 사용해 조건에 맞는 데이터를 필터링하고 매핑했습니다. 그러나 이 과정에서 상품 조회와 관련된 쿼리 코드에 중복이 많았고, 실행되는 쿼리 수도 많았습니다.이 문제를 해결하기 위해 개선 전 코드와 개선한 코드를 비교하고, 성능 테스트 코드를 통해 개선 효과를 확인해 보겠습니다. 해당 트러블 슈팅에 대해서 Github에도 정리했으니 참고해주세요.리팩토링 전리팩토링 전 코드는 아래와 같습니다. 데이터 조회 및 처리 로직이 길고 복잡했습니다. 각 태그(userDefinedTag, recommendedTag) 정보.. 2024. 12. 10.