-
[CS] CQS - Command Query SeparationComputer Science 2021. 12. 30. 17:23
Betrand Meyer에 의해 개념이 정리된 Command Query Separation(이하 CQS)는 질의(query)와 명령(command)을 정확히 분리하는 것을 목적으로 한다.
- query(질의)는 결과값을 반환하고, 시스템의 상태를 변화시키지 않는다. 즉 부작용에서 자유롭다.(free of side effets)
- command(명령)은 결과를 반환하지 않고, 시스템의 상태를 변경한다.
기본적으로 이 원칙을 지켜야지만 상황에 따라 예외를 두어야한다.
cqs의 예외 중 하나는 stack의 pop이다.
pop함수는 스택의 맨 위의 값을 빼서(command) 반환(query)하는 일까지 병행한다.
cqs를 기본적으로 지키되 필요할 때는 예외를 두는 것이 효율적이다.예를 들어 insert의 경우에는 command에 속하는 함수지만, id를 반환함으로써 필요에 의해 cqs 원칙을 깰 수 있다.
update의 경우는 반환을 하지않거나 리스트를 카운트해 구현할 수 있다.
'Computer Science' 카테고리의 다른 글
[CS] Servlet의 개념과 동작 과정 (0) 2022.03.08 [CS] Web server와 Was(web application server) (0) 2022.03.08 [CS] REST API란? (0) 2021.11.16 [CS] 객체지향(OOP)의 5원칙 (SOLID) (0) 2021.11.05 [CS] 객체지향(OOP)의 4가지 특징 (0) 2021.11.05