[Refactoring] 질의 함수와 변경 함수 분리하기


[Refactoring] 질의 함수와 변경 함수 분리하기

눈에 띌만한 사이드 이펙트 없이 값을 조회할 수 있는 메서드는 테스트하기도 쉽고, 메서드를 이동하기도 편하다. 명령-조회 분리(command-query separation) 규칙 : 어떤 값을 리턴하는 함수는 사이드 이펙트가 없어야 한다. 값 조회, 변경 함수를 구분해서 만들자. 눈에 띌만한 사이드 이펙트 캐시는 중요한 객체 상태 변화는 아니다. 따라서 어떤 메서드 호출로 인해, 캐시 데이터를 변경하더라도 분리할 필요는 없다. 질의 함수와 변경 함수 분리하기 public class Billing { public double getTotalOutstandingAndSendBill() { // 조회를 하고 이메일을 보내는 2가지 일을 하고 있음 double result = customer.getInvoices().stream() .map(Invoice::getAmount) .reduce((double) 0, Double::sum); sendBill(); return result; } p...


#리팩토링 #백기선 #스프링 #인프런 #자바

원문링크 : [Refactoring] 질의 함수와 변경 함수 분리하기