มีปัญหาหลายอย่างที่ผสมเข้าด้วยกันเพื่อทำให้การรีแฟคเจอริ่งที่ท้าทายในสภาพแวดล้อมนี้ การผสมลงในนี้เป็นปัญหาที่ไม่ใช่ด้านเทคนิค ("แต่นั่นเป็นปัญหาด้านการจัดการและการต่อสู้ที่ฉันยังไม่ชนะ")
ปัญหาแรกที่ต้องดูคือสาขาที่ใช้เวลานาน สาขาเหล่านี้มีปัญหาในการติดตามการเปลี่ยนแปลงนอกมุมมองของนักพัฒนา เพื่อที่อยู่นี้:
- เมื่อรหัสเสร็จสมบูรณ์ - ให้อีกครั้ง (ให้ฝ่ายสนับสนุนลูกค้าดูหากพวกเขาต้องการ) แต่ผสานเข้ากับการพัฒนาอย่างรวดเร็วเพื่อให้การเปลี่ยนแปลงอื่น ๆ ที่ขึ้นอยู่กับมันจะสามารถหยิบขึ้นมาและการเปลี่ยนแปลงที่มีการระบุความขัดแย้งก่อน ในกระบวนการ.
- หากด้วยเหตุผลบางอย่าง brach จะทำงานได้นานในขณะที่การรีแฟคเตอร์กำลังดำเนินอยู่จึงมีแนวปฏิบัติที่ดีในการผสานจากคอกเข้ากับกิ่งเพื่อรับการเปลี่ยนแปลงและการเปลี่ยนสภาพ บ่อยครั้งสิ่งนี้จะช่วยลดความขัดแย้งและความประหลาดใจในการผสานจากฟีเจอร์สาขาไปยังสาขาที่มั่นคง
- ทั้งหมดบูรณาการการทดสอบความต้องการที่จะทำในรุ่น - ไม่ได้มี ในคุณสมบัติสภาพแวดล้อมนี้อาจหรือไม่อาจรวมเข้ากับระบบ แม้ว่ามันจะเป็นไปได้ที่จะทำการตรวจสอบสติสัมปชัญญะในคุณลักษณะแยก แต่ก็ไม่ได้ระบุปัญหาเมื่อมีการเปิดตัว
- จากช่วงเวลาของการทำให้โค้ดเสร็จสมบูรณ์ถึงการผสาน (ให้เรียกมันว่าการพัฒนา - การแตกสาขาจากมาสเตอร์ / เสถียร / รีลีสมีปัญหาของตัวเองที่ไม่รับการเปลี่ยนแปลงการพัฒนาล่าสุด) ไม่ควรยาวเกินไป ยิ่งคุณรอนานเท่าไรยิ่งมีความรู้ที่หายไปมากขึ้นและยิ่งยากขึ้นสำหรับการรวมโค้ดเข้ากับบรรทัดรหัสอื่น ๆ
อีกประเด็นหนึ่งที่ผสมลงไปในเรื่องนี้คือสิ่งที่ฉันพูดถึงในประเด็นข้างต้นคือบทบาทที่เปลี่ยนไปของสาขาเมื่อเวลาผ่านไป มันเริ่มต้นจากการเป็นสาขาการพัฒนาที่นักพัฒนายอมรับและจากนั้นกลายเป็นพื้นที่ทดสอบ (การทดสอบใดที่ทำที่นี่ซึ่งมีความหมายในแอปพลิเคชันทั้งหมด?) ซึ่งจะรวมเข้ากับคอกม้า (และปล่อยอย่างแน่นอน) - ทดสอบอีกครั้งหรือไม่?)
ด้วยคุณสมบัติที่สั้นลงเริ่มต้นเวลาสิ้นสุดมันจะง่ายขึ้นสำหรับการปรับโครงสร้างเพื่อให้สามารถเลือกได้โดยสาขาอื่น
สนับสนุนให้นักพัฒนาได้รับสภาพแวดล้อมทั้งหมด เพียงแค่การเปลี่ยนแปลงการหยิบเชอร์รี่สามารถนำไปสู่ ... ช่วยบอกว่าสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์น่าสนใจ ในขณะที่การเก็บเชอร์รี่นั้นมีประโยชน์สำหรับการที่จะเป็นโหมดเริ่มต้นของการดึงการเปลี่ยนแปลงในสาขาสามารถน่าเป็นห่วง
การปรับโครงสร้างใหม่นั้นเป็นสิ่งที่ควรทำอย่างต่อเนื่องหรือหากไม่ต่อเนื่องเมื่อใดก็ตามที่มีช่วงเวลาหยุดทำงานสั้น ๆ สาขาทำการปรับโครงสร้างอย่างง่ายทำการทดสอบหน่วยเพื่อตรวจสอบว่าทุกอย่างยังคงทำงานอยู่ (หน่วยที่ทดสอบถูกต้องใช่ไหม? ) จากนั้นผสานกลับเข้าที่มั่นคง ส่งผ่านข้อมูลสำหรับนักพัฒนาซอฟต์แวร์รายอื่นเพื่อดึงการเปลี่ยนแปลงเหล่านั้นที่คุณ refactored เป็นสาขาของตนเอง
เป็นสิ่งสำคัญสำหรับนักพัฒนาในการเป็นเจ้าของคุณภาพของรหัส ในขณะที่ทิศทางของคุณสมบัตินั้นมาจากภายนอกและการจัดสรรเวลามักไม่ใช่ของเราเอง แต่คุณภาพของโค้ดนั้นเป็นสิ่งที่เราจำเป็นต้องภาคภูมิใจและทำเวลาให้
คุณอาจพบคำถามต่อไปนี้มีประโยชน์ในการค้นหาเพื่อจัดสรรเวลาสำหรับจัดการกับหนี้ทางเทคนิค:
คุณอาจต้องการดูเครื่องมือต่าง ๆ เช่นโซนาร์ซึ่งสามารถช่วยระบุส่วนต่าง ๆ ของรหัสที่จำเป็นต้องใช้ในการปรับโครงสร้างให้มากที่สุด ปลั๊กอินหนี้ทางเทคนิคเป็นสิ่งที่สามารถนำมาใช้เพื่อจุดความช่วยเหลือจากการสะสมของหนี้ในช่วงเวลาในฐานรหัส
บ่อยครั้งที่จำเป็นต้องชี้ให้เห็นว่าROIสำหรับการจัดการกับหนี้ทางเทคนิคเป็นเวลาตอบสนองที่รวดเร็วขึ้นสำหรับคุณลักษณะและการแก้ไขข้อบกพร่องจากทีมพัฒนา