컴퓨터 사이언스/개발 상식

CQS ( Command Query Separation )

kimjingyu 2023. 4. 11. 02:16

CQS 란?

어떠한 메서드를 호출했을 때, 내부에서 변경(side effect)가 일어나는 메서드인지, 내부에서 변경이 전혀 일어나지 않는 메서드인지 명확히 분리하는 것이다.

전자를 상태를 변경시키는 Command, 후자를 조회의 기능을 하는 Query라고 한다.

이 원칙을 지킴으로써 얻는 점

데이터 변경 관련 이슈가 발생했을 때, 변경이 일어나는 메서드만 찾아보면 되므로 유지보수가 좋아진다.

개발 시 권장 방법

  • insert - id만 반환한다.
  • update - 아무것도 반환하지 않는다.
  • 조회 - 내부의 변경이 없는 메서드로 설계한다.