함수가 몇 군데에서 호출되고 실행할 조건이 충족되어야하는 경우 해당 조건을 어디에 검사해야합니까? 내 경우에는 드로잉을위한 것입니다. 마우스 버튼을 누르고 있으면 그리기 로직을 실행합니다 (드래그 할 때의 마우스 이동 핸들러에서 수행됩니다).모범 사례 - 함수 실행의 조건부를 평가할 때
옵션 하나는 함수에 넣으라고합니다. 그것은 검사받는 것이 보장됩니다. 원한다면 추상화됩니다.
public function Foo() {
DoThing();
}
private function DoThing() {
if (!condition) return;
// do stuff
}
나는이 함께이 문제는 멀리 DoThing
에서 할 수있다 Foo
의 코드를 읽을 때, 그것은 버그처럼 보이는 것입니다. 첫 번째 생각은 조건이 점검되지 않는다는 것입니다.
옵션 2는 전화하기 전에 확인해야합니다.
public function Foo() {
if (condition) DoThing();
}
더 읽기는하지만 이제는 어디에서나 전화를 걸면 걱정할 필요가 없습니다.
옵션 3은 함수의 이름을보다 구체적으로 변경하는 것입니다.
public function Foo() {
DoThingOnlyIfCondition();
}
private function DoThingOnlyIfCondition() {
if (!condition) return;
// do stuff
}
"올바른"해결책입니까? 아니면 좀 지나치게 먼가요? 이 함수 이름이 모두 코드를 복제하기 시작하면 모든 것이 같았다고 생각합니다.
이것은 주관적입니다 : 당연히 옳은 대답은 아니지만 여기에도 여전히 완벽하다고 생각합니다. 보다 나은 프로그래머의 조언을 얻는 것이 내가 배우는 두 번째 방법입니다. 주관적인 질문은 Google이 대답 할 수없는 것과 정확히 같습니다.
이것은 구조 질문에 응답합니다. 이름에 관해서는, 조금 더 생각하면 알기 쉽고 반복적이지 않은 대안이 생겨야한다. 아마도 DoThing()을위한'DrawOnDrag()'의 정점에있을 것입니다. – Novelocrat