본문 바로가기
반응형

프로그래밍6

Interface 를 활용한 Enum 리팩토링 Java Enum 을 Interface 를 활용하여 리팩토링 하게 된 사례를 공유합니다. 상황 리팩토링 대상이 되는 코드의 특징은 다음과 같다. 10개 이상의 Enum 클래스가 존재하며, Enum 클래스는 지속적으로 더 추가될 수 있음 모든 Enum 클래스는 code, name 이라는 필드를 공통으로 포함하고 있으며, 각 Enum 클래스에 따라 별도 필드가 포함될 수 있음 모든 Enum 클래스는 공통으로 NONE 이라는 Enum 타입을 가지고 있음 목표 위 조건에 해당하는 10개 이상의 Enum 클래스를 기반으로 특정 DTO 객체를 생성해야 한다. 각 Enum 클래스에 대해 List 리스트 객체를 생성해야 한다. public class MetaTypeDto { private String type; pri.. 2023. 6. 21.
[번역] 반복적인 DTO-Domain 변환 처리하기 (feat. Kotlin Flow) 클린 아키텍처를 사용해 보면서 큰 단점으로 느꼈던 부분이 각 계층간 반복적인 DTO 변환이었습니다. 이 단점을 어떻게 해결할 수 있을까 라는 고민을 가지고 있었는데, 약간의 갈증을 해소시켜 주는 글을 읽게 되어 정리해두고자 합니다. Redundant DTO-domain Mapping in Kotlin Flow 글을 읽고 번역(+ 개인 의견)한 내용입니다. (참고로 오역이 있을 수 있으니, 원문을 참고하시길 권장드립니다.) Intro. 계층을 분리하는 것은 높은 품질의 코드를 작성하고, 에러와 예상치 못한 동작을 방지하기 위한 좋은 관행 중 하나이다. API로 부터 데이터를 조회할 때, DTO 클래스에 결과 값을 파싱하여 받아오게 된다. 이를 Mapper 를 사용하여 Domain 클래스로 변환한다. 다른 .. 2023. 3. 31.
[티스토리] highlight.js 를 활용해서 티스토리 코드블럭 꾸미기 아래를 참고하여 HTML 편집까지 접근해보자 티스토리 > 블로그 관리 > 꾸미기 탭 > 스킨 편집 > html 편집 highlight.js 에 가서 원하는 테마를 골라오자 원하는 테마의 이름이 예를 들어 "Atom One Dark" 라면, "atom-one-dark" 형태로 변경한다. 전체 소문자화 띄어쓰기는 - 로 변경 아래 스크립트를 HTML 편집기에 추가 아래 스크립트에서 선택한 테마의 이름으로 변경해주어야 한다. (atom-one-dark 부분을 바꾸기) 아래 사진 참고 2023. 2. 10.
[오픈소스] MapStruct 소개와 사용법 클린 아키텍쳐, 멀티 모듈, 많은 계층 등으로 구성되어 있는 어플리케이션을 개발하다 보면 데이터 모델 간 객체 변환이 꼭 필요하다. 이 때, 한땀한땀 필드를 맵핑해줄 수도 있지만 이 작업을 대신 해주는 오픈소스인 MapStruct 에 대해 알아보도록 하자. 예시 소개 아래와 같은 구조로 프로젝트가 설계되어 있다고 가정을 해보자. 내부 Domain 에서 사용하는 클래스는 Blog, application-layer 와 web-layer 가 서로 통신을 할 때에는 BlogDto, 그리고 외부 HTTP 통신을 할 땐 NaverBlogResponse, KakaoBlogResponse 등으로 데이터를 주고 받을 수 있다. 모두 다 같은 의미의 데이터를 포함하고 있지만 각 계층을 구분짓기 위해 클래스를 분리했다. 이.. 2023. 2. 8.
[디자인패턴] 실무에서 사용해본 전략 패턴 (Strategy Pattern) 신입 개발자일 때 배워서 여태 잘 써먹고 있는 디자인 패턴인 "전략 패턴 (Strategy Pattern)"을 소개해보려고 한다. 전략패턴이란? 하나의 행동에 대해 수행 가능한 여러 전략을 만들고 자바의 다형성을 통해 전략을 선택해서 실행하는 디자인 패턴 예시 소개 커머스 사이트에서는 많은 상품들이 존재하고, 그 상품들은 특정 기준에 따라 점수가 메겨지고 높은 순서가 상품 목록 상단에 위치하게 된다. 상품에 대한 점수화를 구현하기 위해 아래와 같은 요구사항이 들어왔다고 가정해보자. 1. 각 상품의 최종 점수는 다양한 기준에 따라 계산된 점수를 모두 합하여 계산한다. 2. 점수를 계산하는 알고리즘은 변동될 수 있으며 새로운 알고리즘이 추가, 기존 알고리즘이 삭제될 수 있다. 3. 상품의 유형에 따라 특정 .. 2023. 2. 2.
[프로그래밍] 검색과 조회에 대한 Naming Convention 들어가며 어떤 프로젝트의 백엔드 개발을 하게 되면 CRUD API 는 무조건적으로 개발하게 됩니다. 데이터 생성, 조회, 업데이트, 삭제는 기본 기능입니다. 데이터 조회 API CRUD 에서 R (Read) 에 해당하는 데이터 조회는 크게 2가지 기능이 있습니다. 1) PK 기반으로 작동하는 데이터 조회 예: userId 100 에 해당하는 데이터 조회 2) 페이징이 필요한 데이터 검색 예: userName 에 "김" 이 포함되어 있고, age 가 20세 이상인 user 모두 검색 (1페이지, 페이지당 10개) 네이밍 컨벤션 위와 같은 데이터 조회 API 를 개발할 때, 메소드의 이름은 주로 어떻게 설정하시나요? 보통 findBy..., getBy..., fetchBy..., searchBy... 등 다.. 2023. 2. 2.
반응형