การปรับโครงสร้างใหม่นั้นเหมือนกับการยกขึ้นห้องของคุณ
หากคุณรักษาสิ่งต่าง ๆ ให้เป็นระเบียบคุณจะมีค่าใช้จ่ายเชิงเส้นตรงตามสัดส่วนของปริมาณงานที่คุณผลิตในโค้ด O (n) ในแง่อัลกอริธึม สมมติว่าคุณใช้เวลา 10% ในการปรับโครงสร้างเวลา (หรือทำให้ห้องของคุณเรียบร้อย) จะได้รับ 10% และจะคงที่ตลอดเวลา
อย่างไรก็ตามถ้าคุณโยนเสื้อผ้าสกปรกของคุณไปที่มุมแล้วทำต่อไปจำนวนเวลาที่คุณจะใช้ในการยกขึ้นห้องของคุณเติบโตเป็นระเบียบที่ซับซ้อนมากขึ้น สมมติว่าแต่ละชิ้นส่วนของเสื้อผ้าที่สกปรกแต่ละชิ้นมีส่วนช่วยชี้แจงตามระยะเวลาการทำความสะอาดที่ต้องการตอนนี้คุณอยู่ในสถานการณ์ O (e n )
ทุกคนที่เคยขุดเข้าไปในแนวคิดของความซับซ้อนของอัลกอริทึมจะสังเกตเห็นว่ามีจุดคุ้มทุนที่ใดที่หนึ่งนั่นคือมีจำนวนที่เหมาะสมของการซักผ้าสกปรกที่จะสะสม; เท่าใดนั้นขึ้นอยู่กับปัจจัยคงที่ที่ถูกทิ้งในเครื่องหมายใหญ่ -O อีกปัจจัยคือมูลค่างานของคุณเมื่อเวลาผ่านไป: หากงานของคุณมีค่ามากตอนนี้ แต่ราคาถูกในสัปดาห์หน้า (เช่นมีกำหนดส่งศุกร์นี้สำหรับโครงการนี้และอีกสามครั้ง แต่หลังจากนั้นคุณจะไม่ได้ใช้งานเป็นส่วนใหญ่) ) สมการอาจปรากฏออกมาในความโปรดปรานของการไม่ปรับสภาพ
แล้วมันก็มีมวลวิกฤตที่ซับซ้อน ในบางจุดความยุ่งเหยิง ('ความยุ่งเหยิงสำคัญ' ถ้าคุณต้องการ) จะแย่มากจนดูเหมือนจะง่ายกว่าที่จะเผาผลาญทั้งห้องและซื้อเสื้อผ้าใหม่ ในความเป็นจริงมันไม่ปกติ แต่ปรากฏว่าวิธีการและผลทางจิตวิทยาจะทำให้มันยากขึ้นสิบเท่าในการจัดการกับสิ่งนั้น
และแน่นอนถ้าคุณก้าวเข้าสู่โครงการที่ยุ่งเหยิงทวีคูณมหาศาลคุณมีทางเลือก จำกัด
TL; DR: หากมีข้อสงสัย refactor คุณควรมีหลักฐานที่ดีจริง ๆ ก่อนตัดสินใจไม่ทำ