woowacourse-study / 2022-object-study

우테코 4기 오브젝트 스터디
3 stars 4 forks source link

어디까지를 명령 - 쿼리 분리 원칙을 어긴 것으로 봐야 하는가? #50

Open cndqjacndqja opened 2 years ago

cndqjacndqja commented 2 years ago

주제

ArrayList.firstRemove()는 명령-쿼리 분리 원칙을 어긴 것인가?

선정 이유

이번 체스 미션에서 move같은 경우에, 저는 말을 움직인 후 리턴 값이 있는 메서드를 작성했었는데요! 그때 ArrayList.firstRemove()를 보고 명령-쿼리 분리 원칙을 어기지 않았다고 생각했습니다. 이에 다른 분들의 의견을 들어보고 싶네요

해당 텍스트

관련 페이지

cndqjacndqja commented 2 years ago

승팡: 무조건적인 진리는 아니고 원칙이 있다. 마틴파울러: 이걸 따르는건 좋은데, 무조건 예외 케이스는 있다.

명령 쿼리 분리를 왜 해야 하는가? 정: 부수 효과를 제어하기 위해서

라이브러리나 API는 쿼리 분리 원칙을 지키지 않은 것 같다. 어떻게 생각하는가? 정: 안정적으로 변경되지 않지만 성능에 초점을 맞춰서 그렇게 나온 것이 아닐까? 차리: 관점의 차이인 것 같다. 어쨌든 API를 만드는 것이고 인터페이스만 제공하는 것이기 떄문에 내부 구조에 대해서는 잘 모르니 그것 자체로 캡슐화가 잘 되어있는 것 아닐까?

최종 정리 마틴 파울러의 의견과 대부분 비슷한 의견이 나왔다. 우리가 코드를 짤 때는 일반적으로 지향하는 것이 좋지만, 어쩔 수 없는 예외 케이스는 존재한다.