ฉันเป็นผู้ศรัทธาที่ยิ่งใหญ่ในกฎลูกเสือ :
ตรวจสอบโมดูลที่สะอาดกว่าทุกครั้งที่คุณตรวจสอบ "ไม่ว่าใครจะเป็นคนเขียนต้นฉบับจะทำอย่างไรถ้าเราใช้ความพยายามไม่ว่าจะเล็กแค่ไหนในการปรับปรุงโมดูล ทั้งหมดตามกฎง่ายๆนั้นเราจะเห็นจุดจบของการเสื่อมของระบบซอฟต์แวร์ของเราอย่างไม่หยุดยั้งแทนระบบของเราจะค่อยๆดีขึ้นและดีขึ้นตามที่วิวัฒนาการเรายังเห็นทีมที่ดูแลระบบโดยรวมค่อนข้าง มากกว่าเพียงแค่บุคคลที่ดูแลส่วนเล็ก ๆ ของตัวเอง
ฉันยังเป็นผู้เชื่อที่ยอดเยี่ยมในแนวคิดที่เกี่ยวข้องกับการปรับโครงสร้างแบบฉวยโอกาส :
แม้ว่าจะมีสถานที่สำหรับความพยายาม refactoring ที่กำหนดไว้บางอย่างฉันต้องการส่งเสริมให้ refactoring เป็นกิจกรรมที่มีโอกาสทำทุกครั้งและทุกที่ที่รหัสจำเป็นต้องทำความสะอาด - โดยใครก็ตาม สิ่งนี้หมายความว่าเมื่อใดก็ตามที่มีคนเห็นรหัสบางอย่างที่ไม่ชัดเจนอย่างที่ควรจะเป็นพวกเขาควรมีโอกาสแก้ไขมันที่นั่นแล้ว - หรืออย่างน้อยก็ภายในไม่กี่นาที
ข้อความที่ตัดตอนมาต่อไปนี้โดยเฉพาะอย่างยิ่งจากบทความ refactoring:
ฉันระวังวิธีการพัฒนาใด ๆ ที่ทำให้เกิดแรงเสียดทานสำหรับการปรับโครงสร้างแบบฉวยโอกาส ... ความรู้สึกของฉันคือทีมส่วนใหญ่ไม่ได้ทำการปรับโครงสร้างใหม่ให้เพียงพอดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องใส่ใจกับทุกสิ่งที่ทำให้คนไม่สนใจ เพื่อช่วยในการชะล้างสิ่งนี้ให้ระวังเมื่อใดก็ตามที่คุณรู้สึกท้อแท้ที่จะทำการปรับโครงสร้างเล็ก ๆ ซึ่งคุณมั่นใจว่าจะใช้เวลาเพียงหนึ่งหรือสองนาทีเท่านั้น สิ่งกีดขวางใด ๆ นั้นเป็นกลิ่นที่น่าจะกระตุ้นการสนทนา ดังนั้นจดบันทึกความท้อแท้และนำมันขึ้นมาพร้อมกับทีม อย่างน้อยที่สุดมันก็ควรจะพูดคุยในช่วงหลังของคุณย้อนหลัง
ที่ที่ฉันทำงานมีการพัฒนาวิธีปฏิบัติหนึ่งที่ทำให้เกิดการเสียดทานอย่างหนัก - Code Review (CR) เมื่อใดก็ตามที่ฉันเปลี่ยนแปลงสิ่งใดก็ตามที่ไม่อยู่ในขอบเขตของ "การมอบหมาย" ของฉันฉันกำลังถูกตำหนิโดยผู้ตรวจสอบของฉันว่าฉันกำลังทำการเปลี่ยนแปลงให้ยากขึ้น นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเมื่อมีการ refactoring เนื่องจากทำให้การเปรียบเทียบแบบ "ต่อบรรทัด" เป็นเรื่องยาก วิธีการนี้เป็นมาตรฐานที่นี่ซึ่งหมายถึงการปรับโครงสร้างแบบฉวยโอกาสเกิดขึ้นได้ยากและต้องมีการปรับโครงสร้างใหม่ "ตามแผน" (ซึ่งมักจะน้อยเกินไปสายเกินไป) หากเกิดขึ้นจริง
ฉันอ้างว่าผลประโยชน์คุ้มค่าและผู้ตรวจสอบ 3 คนจะทำงานหนักขึ้นเล็กน้อย (เพื่อให้เข้าใจรหัสก่อนและหลังมากกว่าดูขอบเขตที่แคบของบรรทัดที่เปลี่ยนไป - การตรวจสอบตัวเองน่าจะดีกว่า ) เพื่อให้นักพัฒนา 100 คนถัดไปที่อ่านและบำรุงรักษาโค้ดจะได้รับประโยชน์ เมื่อฉันแสดงเหตุผลนี้ผู้ตรวจสอบของฉันพวกเขาบอกว่าพวกเขาไม่มีปัญหากับการปรับโครงสร้างของฉันตราบใดที่มันไม่ได้อยู่ใน CR เดียวกัน อย่างไรก็ตามฉันอ้างว่านี่เป็นตำนาน:
(1) ส่วนใหญ่คุณจะตระหนักถึงสิ่งที่และวิธีที่คุณต้องการ refactor เมื่อคุณอยู่ในระหว่างการมอบหมายของคุณ อย่างที่ Martin Fowler กล่าวไว้
ในขณะที่คุณเพิ่มฟังก์ชันการทำงานคุณรู้ว่าบางรหัสที่คุณเพิ่มมีการทำซ้ำบางอย่างกับรหัสที่มีอยู่ดังนั้นคุณต้อง refactor รหัสที่มีอยู่เพื่อล้างสิ่งต่าง ๆ ... คุณอาจได้รับบางสิ่งบางอย่างทำงาน แต่ตระหนักว่ามันจะ ดีกว่าถ้าการโต้ตอบกับคลาสที่มีอยู่มีการเปลี่ยนแปลง ใช้โอกาสนั้นทำสิ่งนั้นก่อนที่คุณจะพิจารณาตนเอง
(2) ไม่มีใครที่จะมองคุณในแง่ดีเมื่อคุณเปิดตัว "refactoring" CRs ที่คุณไม่ควรทำ CR มีค่าใช้จ่ายที่แน่นอนและผู้จัดการของคุณไม่ต้องการให้คุณ "เสียเวลา" ในการปรับโครงสร้าง เมื่อรวมเข้ากับการเปลี่ยนแปลงที่คุณควรทำปัญหานี้จะลดลง
ปัญหานี้ทวีความรุนแรงมากขึ้นโดย Resharper เนื่องจากไฟล์ใหม่แต่ละไฟล์ที่ฉันเพิ่มเข้าไปในการเปลี่ยนแปลง (และฉันไม่สามารถทราบล่วงหน้าได้ว่าไฟล์ใดที่จะมีการเปลี่ยนแปลง) ซึ่งมักจะทิ้งกระจุยกระจายด้วยข้อผิดพลาดและคำแนะนำ - ซึ่งส่วนใหญ่แล้ว เครื่องประกอบ
ผลลัพธ์ที่ได้คือฉันเห็นโค้ดที่น่ากลัวและฉันก็ทิ้งมันไว้ กระแทกแดกดันฉันรู้สึกว่าการแก้ไขรหัสดังกล่าวไม่เพียง แต่จะไม่ปรับปรุงอันดับของฉัน แต่จริง ๆ แล้วลดระดับพวกเขาลงและทาสีฉันในฐานะคนที่ "ไม่สนใจ" ที่เสียเวลาในการแก้ไขสิ่งที่ไม่มีใครสนใจแทนที่จะทำหน้าที่ของเขา ฉันรู้สึกไม่ดีเกี่ยวกับเรื่องนี้เพราะฉันดูหมิ่นรหัสที่ไม่ดีและไม่สามารถยืนดูได้เลยนับประสาเรียกมันจากวิธีการของฉัน!
มีความคิดเกี่ยวกับวิธีที่ฉันจะแก้ไขสถานการณ์นี้ได้อย่างไร
your manager doesn't want you to "waste your time" on refactoring