ฉันได้รับการตรวจสอบโค้ดจากผู้พัฒนาระดับสูงในวันนี้โดยถามว่า "อย่างไรก็ตามอะไรคือสิ่งที่คุณคัดค้านการมอบหมายหน้าที่โดยใช้คำสั่งสวิตช์?" ฉันได้อ่านในหลาย ๆ ที่เกี่ยวกับวิธีการปั๊มการโต้เถียงผ่านวิธีสลับการโทรเป็นวิธีการที่ไม่ดี 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
โครงการ:
- คำศัพท์ที่คุณต้องเขียนให้สะอาดยิ่งขึ้น (น้อยกว่าง่ายต่อการอ่านและคำหลักที่ต้องพิจารณาน้อยลง)
- ไม่ใช่ทุกการกระทำที่มอบหมายให้กับวิธีการเดียว ไม่แตกต่างกันมากนักในการดำเนินการที่นี่ แต่อย่างน้อยข้อความจะถูกแบ่งออกมากขึ้น
- ในหลอดเลือดดำเดียวกันสามารถเพิ่มวิธีอื่นได้ทุกที่ในชั้นเรียนแทนที่จะเป็นจุดเฉพาะ
- วิธีการคือ namespaced ซึ่งเป็นสิ่งที่ดี
- ไม่ได้ใช้ที่นี่ แต่ให้พิจารณากรณีและปัญหาที่
Switch::go()
ดำเนินการกับสมาชิกแทนที่จะเป็นพารามิเตอร์ คุณจะต้องเปลี่ยนสมาชิกก่อนจากนั้นเรียกวิธีการ สำหรับOop
คุณสามารถโทรหาวิธีการได้อย่างอิสระตลอดเวลา
ข้อโต้แย้งที่ฉันจะได้รับจากการสนับสนุนของSwitch
โครงการ:
- เพื่อประโยชน์ของการโต้แย้งวิธีการทำความสะอาดในการจัดการกับการร้องขอเริ่มต้น (ไม่ทราบ)
- ดูเหมือนขลังน้อยซึ่งอาจทำให้นักพัฒนาที่ไม่คุ้นเคยรู้สึกสะดวกสบายมากขึ้น
ใครมีอะไรเพิ่มสำหรับทั้งสองด้าน? ฉันต้องการคำตอบที่ดีสำหรับเขา
Oop
อนุญาตให้ phpdoc อธิบายแต่ละวิธีซึ่งสามารถแยกวิเคราะห์โดย IDE บางตัว (เช่น NetBeans)