클린코드(함수)3

클린코드

함수

명령과 조회를 분리 하라.

함수는 먼가를 수행하거나 먼가를 답하거나 둘 중 하나만 해야 된다.

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");
}
}
}

위에 처럼 명령과 조회를 분리하면 혼란을 에초에 분리하는것이다.

참조