ฉันเลือกตัวเลือกที่ไม่ได้เขียนไว้ (4): แบ่งโครงการของคุณออกเป็นชุดประกอบ / ไลบรารีที่มีความเชี่ยวชาญสูงเพื่อให้ข้อผิดพลาดที่ไม่เกี่ยวข้องจะอยู่ในตำแหน่งที่แตกต่างกันในโครงสร้างการควบคุมเวอร์ชันเสมอ
ฉันขอโทษถ้าเสียงข้างบนฟังดูน่ารำคาญ แต่ฉันหมายถึงอย่างจริงใจ ฉันประจบประแจงเมื่อใดก็ตามที่ฉันเห็นโครงการเสาหินที่มีฟอร์มและเนมสเปซนับร้อยที่ไม่มีส่วนเกี่ยวข้องใด ๆ เลย ฉันเคยเผชิญกับภาวะที่กลืนไม่เข้าคายไม่ออกนี้บ่อยครั้งสงสัยว่าและฉันควรเลิกกระทำที่ได้รับการจัดการกับพื้นที่การทำงานที่แตกต่างกันอย่างไร หลังจากนั้นไม่นานฉันก็ตระหนักว่าการมีขอบเขตหน้าที่ที่แตกต่างกันเหล่านี้ทั้งหมดในโครงการที่มอบหมายได้เพียงอย่างเดียวคือข้อบกพร่องในการออกแบบที่สำคัญ
ฉันยังพบข้อบกพร่องที่ไม่เกี่ยวข้องทั้งหมดบ่อยครั้งในขณะที่ฉันกำลังทำงานกับคุณลักษณะเฉพาะ ฉันอาจกำลังทำงานกับ UI และค้นหาข้อบกพร่องในตรรกะทางธุรกิจบางอย่างและต้องแก้ไขก่อนที่ฉันจะสามารถดำเนินการต่อได้ ความแตกต่างคือตรรกะทางธุรกิจมักจะอยู่ในแอสเซมบลี / โครงการที่แตกต่างจาก UI ดังนั้นสิ่งที่ฉันต้องทำคือทำให้การเปลี่ยนแปลงเล็กน้อยหนึ่งครั้งเพื่อ BL และดำเนินการต่อด้วยความมุ่งมั่นที่น้อยมากจากนั้นทำงานต่อไป
มีองค์กรโครงการที่ดีจริงๆที่ทำให้มันไม่เพียง แต่เป็นไปได้ แต่ค่อนข้างง่ายที่จะจัดการกับปัญหาเหล่านี้โดยการฝังการเปลี่ยนแปลงที่จะหมดการสร้างหรือได้รับการติดหล่มอยู่ในเกิดการระคายเคืองสาขา / ผสาน (แม้ว่าคุณจะกำลังใช้ DVCS ก็ไม่ได้เป็นทั้งหมดไม่เจ็บปวด )
หากคุณไม่มีตัวเลือกนี้ - เช่นคุณเป็นนักพัฒนาซอฟต์แวร์ระดับต้น ๆ ที่ไม่มีการพูดในองค์กรโครงการ - ฉันจะไปกับอันดับ 1 และทำบันทึกที่เหมาะสมในบันทึกเพื่อให้คนอื่นรู้ว่าทำไมคุณถึงทำในสิ่งที่คุณทำ หากคุณทำการเปลี่ยนแปลงที่สำคัญแล้วให้รายงานข้อผิดพลาดในระบบติดตามปัญหาของคุณเพื่อให้มองเห็นสิ่งที่คุณได้รับการแก้ไขและสาเหตุ