#java싱글톤(Singleton) 패턴이란?이번 글에서는 디자인 패턴의 종류 중 하나인 싱글톤 패턴에 대해 알아보자. 싱글톤 패턴이 무엇인지, 패턴 구현 시 주의할 점은 무엇인지에 대해 알아보는 것만으로도 많은 도움이 될 것이라 생각한다. 싱글톤 패턴이란? 싱글톤(Singleton) 패턴의 …
#java다형성(Polymorphism)이란?객체 지향 패러다임의 4가지 주요 특성인 “캡슐화”, “추상화”, “다형성”, “상속”. 개발자라면 이미 각각에 대해 완벽히 알고 있는 사람도 많을 것이고, 객체 지향을 공부해 본 사람이라면 한번 쯤은 들어보았을 내용이다. 이번 글에서는 그 중 “다…
#event이벤트 발행으로 비즈니스 로직 분리하기서비스를 만들다 보면, 처음에는 단순한 crud로 시작했던 API도 점차 복잡한 연관 관계가 생기고, 동시에 처리해야 할 일들이 생긴다. 그리고 더욱 복잡한 기능을 구현하기 위해 외부 모듈이나 시스템을 연동하여 사용하면서 하나의 요청에 함께 묶여 수…
#test인수테스트에서 테스트 격리하기테스트 격리란? 우리는 테스트들이 서로 순서에 상관없이 독립적으로 수행되어야 한다는 것을 알고 있다. 마틴 파울러도 자신의 블로그에 비결정적 테스트의 문제점에 대해서 언급하며 그 원인으로 테스트 격리가 부족하게 될 때 비결정적 테스트가 된다고 했다.…
#dto요청과 응답으로 엔티티(Entity) 대신 DTO를 사용하자처음 웹 애플리케이션을 개발하다보면, 많이 하는 실수 중 하나가 바로 요청과 응답으로 엔티티를 직접 사용하는 것이다. 다음은 컨트롤러에서 요청과 응답으로 엔티티를 직접 사용했을 때의 코드이다. 여러분은 혹시 이렇게 코드를 작성하고 있지 않은가? 만약…
#http-method자원을 수정하는 HTTP 메서드 - PUT vs PATCH들어가며 웹 API를 설계할 때, 최대한 Http 표준을 따라서 용도에 맞는 Http Method를 사용해야 한다는 것은 아마 많은 개발자들이 인지하고 있을 것이다. 이번 글에서는 Http Method 중 특히 자원(엔티티)을 수정하는 용도로 사용하…
#test다 이나믹 테스트(Dynamic Test)란?다이나믹 테스트(Dynamic Test)란? 다이나믹 테스트에 대해 알아보기 전에 상대되는 개념인 정적 테스트와 함께 개념을 비교해서 특징을 한번 살펴보자. JUnit을 이용해서 테스트를 작성하게 되면 보통 라는 어노테이션을 사용해서 테스트 케이스를…
#asynchronous클라이언트에서 비동기 요청 시 최신 데이터를 가져오는 방법클라이언트 쪽 개발을 하다보면, 서버에 특정 자원을 생성하는 요청을 보내고, 요청이 성공한다면 해당 내용을 화면에도 즉각 반영해야 하는 상황을 종종 마주한다. 이 경우, 우리는 생성과 조회를 한번에 해결하는 API 요청을 보냄과 동시에 반환되는 새로…
#value-objectVO(Value Ojbect)란 무엇일까?프로그래밍을 하다 보면 VO라는 이야기를 종종 듣게 된다. VO와 함께 언급되는 개념으로는 Entity, DTO등이 있다. 그리고 더 나아가서는 도메인 주도 설계까지도 함께 언급된다. 이 글에서는 우선 다른 개념들을 뒤로하고, VO의 정의와 생성 조…
#static-factory-method정적 팩토리 메서드(Static Factory Method)는 왜 사용할까?정적 팩토리 메서드를 들어본 적이 있는가? 프로그래밍을 시작한 지 얼마 안된 사람도 정적 팩토리 메서드라는 단어를 한번쯤은 들어봤을 것이다. 그리고 아마 프로그래밍을 조금 해본 사람들은 정적 팩토리 메서드라는 용어에 많이 익숙해져 있고 실제로도 자주…
#clean-code하나의 메서드는 하나의 기능을 수행하자우리는 프로그래밍을 하면서 수많은 메서드들을 작성한다. 그렇다면 우리가 작성하는 프로그래밍에서의 메서드란 무엇일까? 객체 지향 프로그래밍에서 메서드는 객체간의 협력하는 구조를 설계하고 구현하기 위해서 반드시 필요한 객체의 행동에 해당한다. 하지만 구…
#clean-code반복문(iteration) vs 재귀(recursion)반복문과 재귀함수 프로그램은 반복되는 작업을 수행하도록 설계된다. 따라서 반복을 구현하는 로직은 필수적이고 프로그래밍 언어마다 for, while 같은 기본적인 반복 제어문을 지원하고 있다. 반복되는 작업은 기본 제어문을 통해서 뿐만 아니라 재귀함수…