오늘 선임 개발자로부터 코드 검토를 받았습니다. 나는 여러 곳에서 스위치를 호출하는 메소드를 통해 인수를 펌핑하는 것이 나쁜 OOP이며 확장 가능하지 않은 방법에 대해 읽었습니다. 그러나 실제로 그에 대한 결정적인 대답을 얻을 수는 없습니다. 나는 이것을 한 번에 해결하고 싶다.
경쟁 코드 제안은 다음과 같습니다 (php는 예제로 사용되지만보다 보편적으로 적용될 수 있음).
class Switch {
public function go($arg) {
switch ($arg) {
case "one":
echo "one\n";
break;
case "two":
echo "two\n";
break;
case "three":
echo "three\n";
break;
default:
throw new Exception("Unknown call: $arg");
break;
}
}
}
class Oop {
public function go_one() {
echo "one\n";
}
public function go_two() {
echo "two\n";
}
public function go_three() {
echo "three\n";
}
public function __call($_, $__) {
throw new Exception("Unknown call $_ with arguments: " . print_r($__, true));
}
}
그의 주장 중 일부는 "이것 (스위치 방식)은 일반적인 __call () 마술 방식보다 기본 사례를 처리하는 훨씬 더 깔끔한 방법을 가지고있다"는 것이었다.
나는 청결에 대해 동의하지 않으며 실제로 전화를 선호하지만 다른 사람들의 말을 듣고 싶습니다.
Oop
체계 를 지원하기 위해 내가 취할 수있는 인수 :
- 작성해야하는 코드 측면에서 약간 더 깔끔합니다 (더 적게 읽고 이해하기 쉽고 키워드 수를 줄임)
- 모든 조치가 단일 메소드에 위임 된 것은 아닙니다. 여기서는 실행에 큰 차이가 없지만 적어도 텍스트는 더 구획화되어 있습니다.
- 같은 맥락에서, 특정 지점 대신 클래스의 어느 곳에 나 다른 방법을 추가 할 수 있습니다.
- 메서드는 네임 스페이스로되어있어 좋습니다.
- 여기에는 적용되지 않지만
Switch::go()
매개 변수가 아닌 멤버 에서 작동 하는 경우를 고려하십시오 . 먼저 멤버를 변경 한 다음 메소드를 호출해야합니다. 내용은Oop
언제든지 독립적으로 메서드를 호출 할 수 있습니다.
Switch
체계 를 지원하기 위해 내가 취할 수있는 인수 :
- 주장을 위해 기본 (알 수없는) 요청을 처리하는 더 깨끗한 방법
- 익숙하지 않은 개발자가 더 편안한 느낌을 줄 수있는 마법이 줄어 듭니다.
누구든지 양쪽에 추가 할 것이 있습니까? 나는 그에게 좋은 대답을 원합니다.
Oop
일부 IDE (예 : NetBeans)에 의해 구문 분석 될 수있는 각 메소드를 설명하기 위해 phpdoc을 가질 수 있습니다.