메소드를 실행할 때 분기되는 두 개의 경로 중 어떤 경로를 선택할지 알려주는 boolean
전달인자를 보고 selector argument
라고 부릅니다.
이러한 전달인자는 이름만 잘 짓는다면 꽤나 그럴 듯 하게 보일 수 있습니다.
하지만 안타깝게도 코드를 호출하는 사람 입장에선 이 파라미터의 이름을 볼 수 있는 방법이 없습니다. 그래서 이 전달인자가 메소드상에서 무슨 의미를 갖는지 확인하기 위해 시간을 더 들이게 만듭니다.
selector argument
를 사용하는 대신 메소드를 분리해서 작성해야 합니다.
이 규칙은 메소드가 통과하는 경로를 결정하는 데 사용되는 boolean argument가 있는지 확인하여 동작합니다.
규칙을 어긴 코드
public String tempt(String name, boolean ofAge) {
if (ofAge) {
offerLiquor(name);
} else {
offerCandy(name);
}
}
// ...
public void corrupt() {
tempt("Joe", false); // does this mean not to temp Joe?
}
규칙을 준수한 해결책
public void temptAdult(String name) {
offerLiquor(name);
}
public void temptChild(String name) {
offerCandy(name);
}
// ...
public void corrupt() {
age < legalAge ? temptChild("Joe") : temptAdult("Joe");
}
If you like SONARKUBE, don’t forget to give me a star.