เหตุผลที่จะรอจนถึงครั้งที่สามใน Rule of Three?


16

ฉันเพิ่งเจอบทความ " Rule of Three " ในวิกิพีเดีย

กฎข้อที่สามคือกฎการเปลี่ยนรหัสใหม่ของหัวแม่มือเพื่อตัดสินใจว่าเมื่อใดควรเปลี่ยนชิ้นส่วนของรหัสที่ทำซ้ำโดยขั้นตอนใหม่ มันระบุว่าสามารถคัดลอกรหัสหนึ่งครั้ง แต่เมื่อใช้รหัสเดียวกันสามครั้งมันจะถูกแยกลงในกระบวนการใหม่ กฎดังกล่าวได้รับการแนะนำโดย Martin Fowler ใน Refactoring และอ้างถึง Don Roberts

ฉันรู้ว่านี่เป็นเพียงกฎของหัวแม่มือ แต่ทำไมมันแนะนำให้ refactor หลังจากทำซ้ำที่สอง? มีข้อเสียใด ๆ ในการปรับโครงสร้างเมื่อเราเขียนการทำซ้ำครั้งแรก


2
ดูสองเป็นจำนวนที่เป็นไปไม่ได้และกฎ Zero-One-Infinityสำหรับมุมมองชุดอื่น
AakashM

เมื่อพูดถึงการพัฒนาซอฟต์แวร์Wiki ดั้งเดิมมักจะเป็นแหล่งที่ดีกว่า Wikipedia ท้ายที่สุดWard Cunningham ได้คิดค้น Wiki เป็นวิธีการพูดคุยเกี่ยวกับการพัฒนาซอฟต์แวร์ ดูC2.Com/cgi/wiki?RuleOfThree
Jörg W Mittag

2
หากมี 2 สถานการณ์สำหรับการนำมาใช้ซ้ำคุณสามารถแยกตรรกะได้อย่างง่ายดาย (ถ้ามี) เมื่อถึงสามเส้นทางที่เป็นไปได้จะกลายเป็นปัจจัยอีกครั้งง่ายกว่าการทำซ้ำและการบำรุงรักษา
Andrew Lewis


ฉันคิดว่ามันเป็นข้อแก้ตัวที่สะดวกสำหรับ copy-paste เมื่อใครสามารถ refactor และพูดคุย เมื่อคุณได้รับกรณีที่สามคุณสามารถสรุปเพิ่มเติมได้
Alexey

คำตอบ:


17

ฉันคิดว่ากฎง่ายๆนี้มีอยู่เพราะง่ายต่อการติดเล่น "เกิดอะไรขึ้นถ้า ... " เมื่อออกแบบรหัสเป็นครั้งแรกหรือหลังจากทำซ้ำครั้งแรก ฉันพบการวิเคราะห์ที่รุนแรงในบางกรณีเนื่องจากคนเริ่มออกแบบฟังก์ชันที่อาจจำเป็นในภายหลัง แต่ไม่จำเป็นสำหรับปัญหาเฉพาะหน้า

มีศิลปะสำหรับการออกแบบ / การเขียนเฉพาะสิ่งที่คุณต้องการในขณะที่รักษารหัสให้สอดคล้องกับการกู้แฟคตอริ่งในอนาคต


8
นั่นเป็นจุดที่ดี จากประสบการณ์ของฉันการมีสำเนาที่สามยังทำให้ความเหมือนและความแตกต่างระหว่างพวกเขามีความคมชัดกว่าเมื่อใช้เพียงสองเล่ม
Daniel B
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.