전체 글 48

도메인이 다른 데이터를 여러 곳에서 사용해도 되는가?

도메인이 다른 데이터를 합쳐서 사용해도 되는가?팀원 중 한 분이 프로젝션 관련해서 Payment(결제 내역 테이블)에 있는 데이터를 활용해서 최근 7일 사이의 가장 큰 낙찰가의 경매를 보여주는 API를 작성하는 데 도움을 달라는 요청이 왔다. 이 때 의문이 좀 들었다.약간의 배경 설명을 먼저 하겠다. 지금 경매 검색은 bid(입찰 테이블), scrap(쉽게 생각해서 즐겨찾기 기능의 테이블), auction_image(경매 이미지 url 저장 테이블)에 대해 조인 연산을 진행한 뒤에 데이터를 찾아온다. 그 이유는 입찰 횟수, 최고 입찰가, 즐겨찾기 횟수, 경매 썸네일을 가져와야 하기 때문이다. 이 때문에 한 번에 이해가 힘든 쿼리가 발생했다. (글의 마지막에 첨부된 SQL문)내가 구현한 경매 검색 쿼리와 ..

잘못된 리팩토링, OOP와 순수 함수

잘못된 리팩토링, OOP와 순수 함수이전에 올렸던 포스트가 잘못된 부분이 있었다.순수 함수를 사용하면서 테스트가 더 쉬워진 것은 분명히 맞는 사실이다.하지만 JPA와 엔티티, 객체지향의 관점에서는 좋은 코드가 아니었다.사진으로 살펴보자.이전 글에서 이런 코드를 보여주며 테스트하기 어려운 코드를 분리하고 순수 함수를 사용하자는 의견을 냈었다.이런 패턴을 가질 때 좋은 점은 비즈니스 레이어의 코드를 쉽게 테스트할 수 있다는 것이다.테스트 코드를 쉽게 작성할 수 있고 스프링부트 테스트 혹은 JPA 테스트처럼 스프링 컨텍스트를 활용하지 않고도 테스트할 수 있어 속도가 매우 빠르다.이제 단점에 대해 살펴보자.순수 함수에서의 객체순수 함수에서는 객체의 값이 변경되면 새로운 객체를 생성해서 반환한다.그래서 나는 주황..

테스트 코드는 왜 작성하기 어려울까?

주제에 대해 학습한 이유구름 단기 KDT, 프로펙트 과정을 참여하며 이제 고도화를 해야 할 기간이 다가왔다.고도화를 위해 자동화 테스트를 이제 도입해야 한다.시작은 물론 단위 테스트(유닛 테스트)이다.단위 테스트(유닛 테스트)를 작성하는 데 있어서 어려움이 있어서 어떻게 해야 좋은 테스트를 작성할 수 있을지, 코드를 어떻게 리팩토링해야 할 지 고민했다.위의 과정을 여러 글과 강의, 책을 통해 조금이나마 배운 것 같다.문제 정의테스트를 어떻게 할 수 있는가?그래서 단위 테스트로 어디까지 검증해야 하나?현재 테스트 코드를 짜기 어려운 이유가 무엇일까?문제 분석 먼저 나에게는 Junit, Mockito, Spring Test 등을 사용해 본 경험이 없다.(하지만 대충 보니 Jest와 크게 차이가 없어 보여서..