클린코드
함수
명령과 조회를 분리 하라.
함수는 먼가를 수행하거나 먼가를 답하거나 둘 중 하나만 해야 된다.
1 2 3 4 5 6 7 8 9 10 11
   | package com.github.sejoung.function.order;
  public abstract class Sample { 	public abstract boolean set(String attribute, String value);
  	public void run() { 		if (set("username", "unclebob")) { 		}
  	} }
   | 
 
위에 set이라는 메소드가 있다.
설계자의 의도는 attribute있는지를 찾고 있으면 값을 바꾸고 true 없으면 false를 리턴한다는 의도이다.
하나의 메소드에서 두가지 일을 하니 이름도 모호하고 어색하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   |  package com.github.sejoung.function.order;
  public abstract class Sample {
  	public abstract boolean attributeExist(String attribute); 	public abstract void setAttribute(String attribute, String value);
  	public void run() {
  		if (attributeExist("username")) { 			setAttribute("username", "unclebob"); 		} 	} }
 
 
  | 
 
위에 처럼 명령과 조회를 분리하면 혼란을 에초에 분리하는것이다.
참조