เมื่อลำไส้ของคุณกำลังบอกคุณว่าคุณควรจะทำการปรับโครงสร้างบางอย่างมันอาจเป็นไปได้ว่าสัญชาตญาณของคุณจะบอกคุณช้าไปเล็กน้อยว่า
ฉันเข้าใจ "กลิ่น - โค้ด", ความคิดสีแดง - เขียว - refactor และอื่น ๆ แต่บ่อยครั้งฉันรู้สึกว่าเวลาที่ดีที่สุดในการ refactor ไม่ใช่ครั้งแรกที่คุณเขียนรหัส แต่ครั้งที่สองหรือสามคุณใช้รหัสและตระหนักถึง จริง ๆ แล้วมันเป็นปัญหาและใช้งานจริง
มีสองระดับอย่างมีประสิทธิภาพในการ refactoring แรกคือปัญหาที่ชัดเจนที่ปรากฏขึ้นเมื่อคุณรหัสแรก เหล่านี้คือการเพิ่มประสิทธิภาพเล็ก ๆ น้อย ๆ ที่เสียค่าใช้จ่ายน้อยมากที่คุณต้องทำ สิ่งต่าง ๆ เช่นทำให้วิธีการและชั้นเรียนของคุณเล็กและยึดมั่นใน DRY และ SRP จากนั้นคุณมีขั้นตอนเพิ่มเติมในการจัดการกับข้อบกพร่องที่สำคัญในการออกแบบของคุณซึ่งอาจไม่ชัดเจนในทันทีจนกว่ารหัสของคุณจะมีระยะทางไม่กี่ไมล์ เป็นระดับที่สองที่คุณกำลังพูดถึง แต่เพื่อให้มั่นใจว่าการปรับโครงสร้างในภายหลังนั้นไม่ได้มีราคาแพงเกินไปคุณจำเป็นต้องเขียนโค้ดของคุณในลักษณะที่ความพยายามในการมองเห็นในภายหลังนั้นทำได้ง่ายขึ้นและมีค่าใช้จ่ายน้อยลง ซึ่งหมายถึงการทำการปรับโครงสร้างต้นใหม่
ดังที่เจฟฟ์พูดถึงในคำตอบของเขาว่า"เวลาคือเงิน"โดยเฉพาะใน บริษัท ที่มีปริมาณงานสูงและมีความเสี่ยงสูงกว่า เวลาที่ใช้ไปข้างหน้าตรวจสอบให้แน่ใจว่ารหัสอยู่ในสถานะที่ดีที่สุดเท่าที่เป็นไปได้คือประหยัดเวลาในภายหลังเมื่อล้อเล่นสิ่งที่ควรได้รับการเปลี่ยนโครงสร้างอย่างง่ายกลายเป็นการดำเนินการที่สำคัญ
เมื่อเขียนซอฟต์แวร์ทุกครั้งที่มีการปรับปรุงโค้ดของคุณจะเป็นการประหยัดเวลาในภายหลังเมื่อคุณต้องการมันจริงๆ ก่อนหน้านี้คุณ refactor การเปลี่ยนแปลงในภายหลังของคุณจะชัดเจนขึ้น มันเหมือนกับการชำระเงินดาวน์เป็นดอลลาร์ในวันนี้เทียบกับหนี้ทางเทคนิคในอนาคตซึ่งจะเป็นดอลลาร์ในวันพรุ่งนี้ที่สูงเกินจริง
ไม่ว่าในกรณีใดการปรับโครงสร้างใหม่ไม่ควรเป็นงานที่คุณต้องเลื่อนออกไปจนกว่าจะมีอนาคตที่ลึกลับเมื่อซอฟต์แวร์เสร็จสมบูรณ์แล้วและมีเสถียรภาพเนื่องจากจะเพิ่มความเสี่ยงของคุณในภายหลังเมื่อเงินเดิมพันสูงขึ้นและผลิตภัณฑ์เปลี่ยนแปลงได้ยากกว่ามาก การปรับโครงสร้างใหม่ควรเป็นส่วนหนึ่งของกิจกรรมประจำวันของคุณและนี่คือสาระสำคัญของปรัชญา Red-Green-Refactor ที่คุณกล่าวถึง