ชีวิตไม่มีวันหยุดนิ่ง โค้ดที่เราเขียนก็เช่นกัน เพื่อที่จะก้าวให้ทันการเปลี่ยนแปลงที่รวดเร็วอย่างบ้าคลั่งในทุกวันนี้ เราต้องพยายามทุกวิถีทางเพื่อเขียนโค้ดที่หลวมที่สุด—ยืดหยุ่นที่สุด—เท่าที่จะเป็นไปได้ มิฉะนั้นเราอาจพบว่าโค้ดของเราล้าสมัยอย่างรวดเร็ว หรือเปราะบางเกินกว่าจะแก้ไข และสุดท้ายอาจถูกทิ้งไว้ข้างหลังในการก้าวไปสู่อนาคตที่เร่งรีบ
ย้อนกลับไปใน Topic 11, _Reversibility_ เราได้พูดคุยเกี่ยวกับอันตรายจากการตัดสินใจที่ไม่สามารถย้อนกลับได้ ในบทนี้ เราจะมาบอกวิธีทำการตัดสินใจที่ย้อนกลับได้ เพื่อให้โค้ดของคุณยังคงยืดหยุ่นและปรับตัวได้ท่ามกลางโลกที่ไม่แน่นอน
อย่างแรก เราจะมาดูเรื่อง coupling—ความสัมพันธ์ระหว่างโค้ดส่วนต่าง ๆ Topic 28, _Decoupling_ จะแสดงให้เห็นถึงวิธีแยกแนวคิดออกจากกัน เพื่อลด coupling
ถัดมา เราจะดูเทคนิคต่าง ๆ ที่คุณใช้ได้ใน Topic 29, _Juggling the Real World_ เราจะพิจารณาสี่กลยุทธ์ที่ช่วยจัดการและตอบสนองต่อ events—ซึ่งเป็นแง่มุมสำคัญของแอปพลิเคชันซอฟต์แวร์สมัยใหม่
โค้ดแบบ procedural และ object-oriented แบบดั้งเดิมอาจมี coupling ที่แน่นเกินไปสำหรับการใช้งานของคุณ ใน Topic 30, _Transforming Programming_ เราจะใช้ประโยชน์จากสไตล์ที่ยืดหยุ่นและชัดเจนยิ่งขึ้นจาก function pipelines แม้ว่าภาษาที่คุณใช้จะไม่รองรับโดยตรงก็ตาม
สไตล์ object-oriented ทั่วไปอาจล่อให้คุณตกหลุมพรางอีกอย่าง อย่าหลงกลเชียวล่ะ มิฉะนั้นคุณอาจต้องจ่ายค่า Topic 31, _Inheritance Tax_ มหาศาล เราจะสำรวจทางเลือกอื่นที่ดีกว่าเพื่อให้โค้ดของคุณยืดหยุ่นและง่ายต่อการเปลี่ยนแปลง
แน่นอนว่าวิธีที่ดีในการรักษาความยืดหยุ่นคือการเขียนโค้ดให้น้อยลง การเปลี่ยนแปลงโค้ดอาจเปิดช่องว่างให้เกิด bugs ใหม่ ๆ Topic 32, _Configuration_ จะอธิบายวิธีย้ายรายละเอียดออกจากโค้ดโดยสิ้นเชิง เพื่อให้สามารถเปลี่ยนแปลงได้ง่ายและปลอดภัยยิ่งขึ้น
เทคนิคเหล่านี้จะช่วยให้คุณเขียนโค้ดที่ยืดหยุ่น (bend) และไม่พังง่าย ๆ (break)