이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
명령과 조회를 분리하라 !
-
함수는 뭔가를 수행하거나
-
뭔가에 답하거나
-
둘 중에 하나만 해야한다.
public boolean set(String attribute, String value);
-
이 함수는 이름이 attribute인 속성을 찾아
-
값을 value로 설정한 후
-
성공하면 true를 반환
-
실패하면 flase를 반환한다.
- 그래서 다음과 같은 괴상한 코드가 나온다.
if (set("userName", "goodGid"))
- 위 코드는 다양한 해석이 가능하다.
-
userName이 goodGid으로 설정되어 있는지 확인하는 코드인가?
-
userName을 goodGid로 설정하는 코드인가?
- 함수를 호출하는 코드만 봐서는 의미가 모호하다.
Refactoring
if (attributeExists("userName")){
setAttribute("userName", "goodGid");
}
- 명령과 조회를 분리한다.