ฉันแน่ใจว่ามีชื่อสำหรับรูปแบบการต่อต้านนี้อยู่ที่ไหนสักแห่ง; อย่างไรก็ตามฉันไม่คุ้นเคยกับวรรณกรรมต่อต้านรูปแบบที่จะรู้
พิจารณาสถานการณ์สมมติต่อไปนี้:
or0
เป็นฟังก์ชั่นสมาชิกในชั้นเรียน ดีขึ้นหรือแย่ลงมันขึ้นอยู่กับตัวแปรของสมาชิกในคลาสเป็นอย่างมาก Programmer A มาพร้อมและต้องการฟังก์ชั่นที่ต้องการor0
แต่แทนที่จะเรียกใช้or0
Programmer A คัดลอกและเปลี่ยนชื่อคลาสทั้งหมด ฉันเดาว่าเธอจะไม่โทรor0
เพราะอย่างที่ฉันพูดมันขึ้นอยู่กับตัวแปรของสมาชิกในการทำงาน หรือบางทีเธออาจเป็นโปรแกรมเมอร์รุ่นเยาว์และไม่รู้วิธีโทรจากรหัสอื่น ดังนั้นตอนนี้เรามีor0
และc0
(c สำหรับการคัดลอก) ฉันไม่สามารถทำข้อผิดพลาดของโปรแกรมเมอร์ A อย่างสมบูรณ์สำหรับวิธีการนี้ - เราทุกคนอยู่ภายใต้กำหนดเวลาที่ จำกัด และเราแฮกรหัสเพื่อให้งานเสร็จสมบูรณ์
โปรแกรมเมอร์หลายรักษาดังนั้นก็ตอนนี้รุ่น or0
เป็นรุ่นแล้ว น่าเสียดายที่โปรแกรมเมอร์ส่วนใหญ่ที่ดูแลชั้นเรียนที่ดูเหมือนจะไม่รู้อย่างสมบูรณ์ - ซึ่งเป็นหนึ่งในข้อโต้แย้งที่แข็งแกร่งที่สุดที่ฉันสามารถคิดได้สำหรับภูมิปัญญาของหลักการ DRY และอาจมีการบำรุงรักษาโค้ดอิสระด้วย ทั้งสองวิธีก็ปรากฏว่าและได้รับการดูแลเป็นอิสระจากกัน และสุขและความสุขมีข้อผิดพลาดเกิดขึ้นในที่ไม่ได้เกิดขึ้นใน orN
c0
cN
or0
c0
c
or0
c0
cN
orN
ดังนั้นฉันมีคำถามสองสามข้อ:
1. ) มีชื่อสำหรับรูปแบบการต่อต้านนี้หรือไม่? ฉันเคยเห็นสิ่งนี้เกิดขึ้นบ่อยครั้งฉันพบว่ามันยากที่จะเชื่อว่านี่ไม่ใช่การต่อต้านแบบ
2. ) ฉันเห็นทางเลือกไม่กี่อย่าง:
a.) แก้ไขorN
เพื่อรับพารามิเตอร์ที่ระบุค่าของตัวแปรสมาชิกทั้งหมดที่ต้องการ จากนั้นแก้ไขcN
เพื่อโทรorN
ด้วยพารามิเตอร์ที่จำเป็นทั้งหมดที่ส่งผ่านเข้ามา
ข.) พยายามที่จะแก้ไขพอร์ตด้วยตนเองจากการorN
cN
(ใจคุณฉันไม่ต้องการทำสิ่งนี้ แต่เป็นไปได้จริง)
c.) คัดลอกorN
ไปที่cN
--again, yuck แต่ฉันเขียนเพื่อความสมบูรณ์
d.) พยายามที่จะคิดออกที่เสียแล้วซ่อมอิสระจาก cN
orN
ทางเลือกที่ดูเหมือนว่าการแก้ไขที่ดีที่สุดในระยะยาว แต่ฉันสงสัยว่าลูกค้าจะให้ฉันใช้มัน ไม่เคยมีเวลาหรือเงินเพื่อแก้ไขสิ่งที่ถูกต้อง แต่เวลาและเงินเพื่อแก้ไขปัญหาเดียวกันเสมอ 40 หรือ 50 ครั้งใช่ไหม
ใครช่วยแนะนำวิธีการอื่น ๆ ที่ฉันอาจไม่ได้พิจารณา?