입니다 (참고 :이 내용은 this question과 관련되어 있지만 더 명확하게 작성되었을 수 있으므로 다시 시도하고 있습니다. 범위.)내 양식을 리팩터링하는 가장 좋은 방법은
나는 매개 변수의 수에 따라 수많은 섹션과 가능한 많은보기가있는 복잡한 양식을 만드는 코드를 상속 받았습니다. 나는 그걸로 잠시 동안 일해 왔고 마침내 다시 생각해 볼 생각을 할 기회를 얻었습니다. 그것은 현재 다음과 같이 기능의 무리와 함께, 절차 적으로 쓰여 :
get_section_A ($type='foo', $mode='bar', $read_only=false, $values=array()) {
if ($this->type == 'foo') {
if ($this->mode == 'bar') { }
else { }
} else { }
}
은 이러한 매개 변수 주위에 전달하는 것은 불쾌한, 그래서 나는이 같은 클래스를 쓰기 시작했습니다
이class MyForm {
public $type; // or maybe they'd be private or
public $mode; // I'd use getters and setters
public $read_only; // let's not get distracted by that :)
public $values;
// etc.
function __constructor ($type='foo', $mode='bar', $read_only=false, $values_array=array()) {
$this->type = $type;
// etc.
}
function get_sections() {
$result = $this->get_section_A();
$result .= $this->get_section_B();
$result .= $this->get_section_C();
}
function get_section_A() {
if ($this->type == 'foo') { }
else { }
}
function get_section_B() {}
function get_section_C() {}
// etc.
}
문제는이다 프로 시저 함수가 몇 개의 파일 (섹션 그룹)으로 나뉘어져 있고, 하나의 클래스 파일에 이들을 모두 결합하면 2500 라인을 볼 수 있습니다.이 라인은 다루기가 힘듭니다. 나는 몇 가지 솔루션을 생각했습니다
- 는 불쾌한 매개 변수와 함께 살고 유지하고
- 각 그룹에 대해 별도의 클래스를 만들고 2500 선 파일을 갖는 :
- 라이브 내 시간에 다른 일을 할 섹션이 어떻게 든 "알고"나는 # 3을 할 경우
는, 나는 두 가지 기본 방법을 생각했습니다 이러한 매개 변수의 값 :
- MyForm 객체를 단일 매개 변수로 전달
- MyForm에 설정된 정적 속성으로 FormSectionGroup 클래스를 만든 다음 그룹 파일에서 각 클래스가 FormSectionGroup을 확장하고 해당 매개 변수에 대한 현재 값에 자동으로 액세스합니다.
1) 설정을하는 것이 더 쉬울 것입니다, 나는 get_section_A()
안에있어 일단 내가 $this->type
또는 $myForm->type
모든 것을 다른 아니라고하지만 OOP 정확하지 여부. (실제로 OOP 접근 방식으로 변경하지 않고도이 작업을 수행 할 수 있습니다.)
다른 접근 방법이 있습니까? 어떤 생각이 더 나은가?
고마워, 피터, 내가 그걸 살펴볼거야. – sprugman