มันเป็นการดีที่จะเก็บความคิดเห็นข้อผิดพลาดในรหัสหรือไม่


15

ทีมของฉันใช้ตัวพิมพ์เล็ก - ใหญ่เป็นตัวควบคุมเวอร์ชัน โครงการที่ฉันทำงานอยู่ไม่ได้เริ่มต้นมาตั้งแต่ 7-8 ปี ตลอดช่วงเวลาของโครงการเรามีการเปิดตัวเซอร์วิสแพ็คแก้ไขข้อผิดพลาดหลายครั้งปัญหาถูกติดตามโดยใช้ระบบติดตามบั๊กและผู้คนส่วนใหญ่ที่ทำงานแก้ไขบั๊กจะทำตามความคิดเห็นใน START / END block พร้อมกับวันที่, ผู้แต่ง, bug-id ฯลฯ

ฉันรู้สึกว่ามันไม่เกี่ยวข้องเลยและทำให้รหัสยุ่งเหยิงและไม่สะดวกในการบำรุงรักษาและสิ่งเหล่านี้เป็นสิ่งที่ต้องเป็นส่วนหนึ่งของการตรวจสอบความคิดเห็น / ป้ายกำกับ ฯลฯ ซึ่งเราสามารถเก็บข้อมูลวงจรชีวิตเพิ่มเติมของผลิตภัณฑ์งานได้

วิธีปฏิบัติที่ดีที่สุดที่ควรปฏิบัติตามคืออะไร

ผู้ตรวจสอบบางส่วนของรหัสยืนยันที่จะแสดงความคิดเห็นเกี่ยวกับข้อผิดพลาดและการแก้ไขเพื่อความสะดวกในชีวิตของพวกเขา ในความเข้าใจของฉันพวกเขาจะต้องตรวจสอบไฟล์โดยการแมปไปยังมุมมองและรับบันทึกการเปลี่ยนแปลงของสาขาและตรวจสอบ มันจะมีประโยชน์ถ้าฉันจะได้รับแนวทางปฏิบัติที่ดีที่สุดในการส่งรหัสที่อัปเดตเพื่อการตรวจสอบ


3
คำถามจริงคือทำไมพวกเขาทำอย่างนั้น นี่อาจเป็นขั้นตอนที่เก่ามากจากก่อนการควบคุมแหล่งที่มา

@anderson - ฉันรู้สึกว่าพวกเขามีความเข้าใจที่ถูกต้องเกี่ยวกับการใช้ clearcase เมื่อมีการเปิดตัว เพื่อการฝึกฝนนั้นอาจจะตามมาอีก ....
sarat

พิจารณาหา?


ฉันจะไม่พูดว่าเป็นการปฏิบัติที่ไม่ดี อย่างไรก็ตามการวัดคุณภาพซอฟต์แวร์อย่างใดอย่างหนึ่งคือเปอร์เซ็นต์ความคิดเห็นผ่านซอร์สโค้ด
รูดี้

คำตอบ:


27

ปัญหาเกี่ยวกับการเพิ่มตัวแก้ไขข้อผิดพลาดเป็นความคิดเห็นในรหัสคือคุณไม่ได้รับเรื่องเต็ม ถ้าผมเห็นเป็นชิ้นดีสมบูรณ์ของรหัสที่ติดแท็ก "นี้เป็นแก้ไขข้อผิดพลาดblah " ปฏิกิริยาแรกของฉันจะพูดว่า "เพื่ออะไร" รหัสอยู่ที่นั่นใช้งานได้ สิ่งเดียวที่ฉันต้องรู้เพื่อรักษารหัสคือความคิดเห็นที่บอกฉันว่ามันทำอะไร

แนวทางปฏิบัติที่ดีกว่าคือการเพิ่มการอ้างอิงข้อผิดพลาดใน SCM ส่งบันทึก ด้วยวิธีนี้คุณจะเห็นว่าบั๊กคืออะไรมันถูกเปิดตัวที่ไหนและมันได้รับการแก้ไขอย่างไร นอกจากนี้เมื่อเวลาสำหรับการเปิดตัวมาคุณสามารถแยกบันทึก SCM และเพิ่มสัญลักษณ์แสดงหัวข้อย่อยที่ระบุว่ามีข้อผิดพลาดและได้รับการแก้ไข หากสาขาหรือเวอร์ชั่นอื่นมีข้อบกพร่องเดียวกันมันเป็นเรื่องง่ายในการค้นหาการแก้ไขและนำไปใช้ใหม่หากเป็นสิ่งเดียวกัน

ต้องพูดทั้งหมดนี้ฉันยังเห็นด้วยกับคำตอบของชาร์ลส์ หากเหตุผลของรหัสไม่ชัดเจนให้บอกผู้ดูแลว่ารหัสนั้นมีเหตุผลและควรได้รับการดูแลด้วยความระมัดระวัง


คำตอบที่ยอดเยี่ยม ฉันได้เพิ่มคะแนนไปที่คำถามของฉันอีกสองสามข้อ โปรดตรวจสอบและอัปเดตคำตอบของคุณ ขอขอบคุณ. BTW, คุณสามารถช่วยฉันด้วยคำสั่ง clearcase เพื่อรับบันทึกจากสาขาเฉพาะหรือไม่?
sarat

@Sarath ฉันกลัวว่าฉันไม่เคยใช้ ClearCase มาก่อน รู้สึกฟรีเพื่อใช้ superuser ถาม ฉันแน่ใจว่ามีคนจำนวนมากที่รู้ว่าเต็มใจช่วยเหลือ
Dysaster

4
ตัวติดตามบั๊กที่ดีเช่น JIRA สามารถดูบันทึกการกระทำของ SCM ของคุณและดึงข้อมูลออกมาเพื่อหาจุดบกพร่อง แค่คิดว่าคุณส่งมอบข้อผิดพลาดและตัวติดตามข้อผิดพลาดจะเพิ่มหมายเหตุลงในรายงานข้อผิดพลาดที่ส่ง X อ้างถึงข้อผิดพลาดโดยอัตโนมัติ

@Andersen - ขอบคุณเราใช้ JIRA แต่ฉันต้องแน่ใจว่ามันใช้ถูกหรือไม่
sarat

@ Thorbjørnอ่าคุณเข้าใจง่ายแล้ว ฉันต้องทำมันเองในวันนั้นด้วยคอมโบ CVS / Bugzilla (และ SVN / Bugzilla หลังจากนั้น) เพิ่มการอ้างอิงข้อผิดพลาดในการกระทำของฉันและเพิ่มการอ้างอิงการกระทำไปที่ข้อผิดพลาด เกิดข้อผิดพลาดในกระบวนการที่เกิดขึ้นบ่อยครั้งและนักพัฒนามักจะลืมสิ่งใดสิ่งหนึ่ง แต่ข้อมูลมีประโยชน์มากหลายครั้ง
Dysaster

23

การปฏิบัติที่ไม่ดีส่วนใหญ่ ฉันจะไม่พูดว่าไม่ควรทำ บางครั้งคุณพบข้อผิดพลาดใน API ภายนอกที่คุณต้องแก้ไข การทำงานรอบ ๆ อาจทำให้สมองตายโดยสมบูรณ์ถ้าคุณไม่รู้เกี่ยวกับบั๊กพื้นฐาน ในกรณีนี้อาจเป็นความคิดที่ดีที่จะบันทึกข้อผิดพลาดในรหัสเพื่อให้เพื่อนร่วมงานหรือตัวคุณเองในภายหลังไม่พยายาม "แก้ไข" รหัสสมองที่เห็นได้ชัด


3
ตกลง เพิ่มความคิดเห็นประเภทนี้เมื่อพวกเขาเพิ่มคุณค่าที่สำคัญ อย่าทำเพื่อผลประโยชน์ในการเปลี่ยนด้ามจับ
quick_now

ดีนี่สนับสนุนแนวคิดของความคิดเห็นที่บอกว่า "ทำไม" มีรหัสอยู่บ้าง ดูprogrammers.stackexchange.com/questions/1/…
กาเบรียล

ฉันทำสิ่งนี้มาสองสามครั้งแล้ว: รหัสที่ทันทีที่แรกท้าทายตรรกะอย่างสมบูรณ์ ("นี่คือรหัส f * นี่คืออะไร?") แต่จริงๆแล้วมีเหตุผลที่ดีมากดังนั้นคุณต้องการให้ผู้คนเหยียบย่ำรอบ ๆ มัน. จากนั้นการเพิ่มความคิดเห็นอย่างระมัดระวังเพื่ออธิบายสาเหตุของรหัสนั้นจะทำให้ชีวิตของทุกคนง่ายขึ้น จากนั้นถ้ามีคนคิดวิธีที่ดีกว่าในการแก้ปัญหาเดิมเครดิตทั้งหมดให้พวกเขาฉันพูด - พวกเขารู้ว่าทำไมการใส่รหัส braindead และสิ่งที่ควรจะทำให้สำเร็จจึงง่ายกว่าการใช้ทางเลือกอื่น วิธีการแก้.
CVn

9

การปฏิบัติที่ไม่ดี ความคิดเห็นจะล้าสมัยและทำให้รหัสยุ่งเหยิง ข้อมูลยังคงมีอยู่ในประวัติรุ่นของระบบ SCC ของคุณหากจำเป็น


3

ฟังดูเหมือนเป็นการปฏิบัติที่ไม่ดี เกิดอะไรขึ้นถ้าองค์กรของคุณตัดสินใจย้ายไปยังระบบติดตามบั๊กอื่น อย่าผูกผลิตภัณฑ์ของคุณแน่นเกินไปกับเครื่องมือที่คุณใช้ในปัจจุบัน แทนที่จะอ้างถึงรหัสข้อบกพร่องที่เฉพาะเจาะจงและสาเหตุที่รหัสดูเหมือนไม่ชัดเจนกระตุ้นการตัดสินใจออกแบบของคุณด้วยความคิดเห็นในรหัส


นี่คือการแบ่งขั้วที่ผิดพลาด ทำไมคุณไม่สามารถมีความคิดเห็นในการออกแบบ ("นี่คือเหตุผลที่เราทำ xy z") เมื่อจำเป็นและพูดถึงรหัสข้อบกพร่องในการส่งข้อความ?
Matthew Flaschen

มันบอกว่าคุณไม่สามารถอยู่ที่ไหน ฉันอ้างถึงรหัสข้อบกพร่องในรหัสไม่ใช่ VCS ส่งข้อความ
fejd

ขอโทษฉันเข้าใจผิด ฉันคิดว่าคุณกำลังพูดว่ามันไม่มีประโยชน์ที่จะใส่รหัสข้อบกพร่องที่ใดก็ได้
Matthew Flaschen

ไม่มีปัญหานั่นหมายความว่าคำตอบของฉันไม่ชัดเจนเพียงพอ :)
fejd

2

ปฏิกิริยาแรกของฉันจะไม่ทำซ้ำตัวเองเพื่อให้มันออกมาจากรหัสและลงในบันทึก SCM เรามีการสนทนาคล้ายกันที่นี่เกี่ยวกับความคิดเห็นการแก้ไขสำหรับฟังก์ชั่นชื่อผู้เขียนและวันที่สร้างสำหรับไฟล์และฟังก์ชั่น ในอดีต (ก่อนที่จะใช้ SCM) ข้อมูลทั้งหมดนี้ถูกเก็บไว้ในไฟล์เพื่อให้สามารถสร้างวิวัฒนาการของไฟล์ได้

นักพัฒนาประมาณครึ่งหนึ่งต้องการให้ข้อมูลนี้สามารถมีข้อมูลทั้งหมดได้ในที่เดียว (สิ่งนี้จะกระตุ้นให้พวกเขาค้นหาการเปลี่ยนแปลงใน SCM) อีกครึ่งหนึ่งของผู้พัฒนาไม่เริ่มค้นหาเบาะแสของสิ่งที่เปลี่ยนแปลงในโคย์ส แต่มาจาก SCM ดังนั้นพวกเขาจึงไม่ต้องการข้อมูลในโค้ด เรายังไม่ได้ตัดสินใจว่าจะทำอย่างไรกับความคิดเห็นเหล่านั้น มันขึ้นอยู่กับวิธีการทำงานของคนและบางคนดื้อรั้นมากเกี่ยวกับการออกจากวิธีการที่พวกเขารู้จัก สิ่งเดียวกันเกี่ยวกับการคอมเม้นต์บล็อคโค้ดและทิ้งไว้ในโค้ดตลอดไป


ฉันเดาว่า SCM ควรตรวจสอบรหัสความคิดเห็นและปฏิเสธที่จะยืนยัน ... มันเพิ่มความยุ่งเหยิงให้กับโค้ดเพื่อประโยชน์ในการค้นหา 5 นาทีในประวัติศาสตร์ SCM หากบางวันในอนาคตที่คุณต้องการ กลับ.
Julien Roncaglia

เห็นด้วย แต่พยายามนำไปใช้ในแหล่งที่มาที่ปลอดภัย: D ในทีมงานโครงการของเราเราได้ทำงานร่วมกับบทวิจารณ์ดังนั้นในตอนนี้ผู้ตรวจสอบจะปฏิเสธบล็อกเหล่านั้น
refro

โอ้ SourceSafe ... ขอโทษสำหรับคุณและทีมของคุณ
Julien Roncaglia

อย่าเป็นมันดีกว่าไม่มีอะไร และในขณะนี้การพัฒนาใหม่ทั้งหมดเสร็จสิ้นลงด้วยการโค่นล้มดังนั้นในแต่ละเดือนฉันจึงไม่ต้องทำอะไรกับแหล่งที่ปลอดภัย
refro

1

เพียงเพิ่มสิ่งที่Dyaster และคณะ ได้กล่าวถึงแม้ว่า JIRA มีความสามารถที่ดีมากในการแสดงการเปลี่ยนแปลงที่เกี่ยวข้องกับการแก้ไขข้อบกพร่องสถานที่ที่ดีที่สุดในการจัดทำเอกสารการแก้ไขข้อบกพร่องคือในกรณีทดสอบ หากรหัสไม่ชัดเจนหากไม่มีความคิดเห็นระบุว่ามีการแก้ไขข้อผิดพลาดนั่นคือ "รหัสกลิ่น" ที่กล่าวว่าหากคุณไม่มีเวลาในการทำความสะอาดกลิ่นความคิดเห็นควรอ้างถึงกรณีทดสอบที่ควรชัดเจนมากขึ้นว่าทำไมรหัสกำลังทำสิ่งที่มันทำ หากคุณไม่มีเวลาเขียนกรณีทดสอบเพื่ออธิบายการแก้ไขข้อผิดพลาดข้อผิดพลาดนั้นยังไม่ได้รับการแก้ไขจริง ๆ มันจะถูกเลื่อนออกไป


1

ฉันจะเห็นด้วยกับการเพิ่มรหัสข้อผิดพลาดในการกระทำข้อความและไม่อยู่ในรหัสตัวเอง เครื่องมือติดตามข้อผิดพลาดที่ขูดข้อความส่งข้อความรหัสข้อบกพร่องโดยอัตโนมัติมีประโยชน์มาก

นอกจากนี้คุณสามารถใช้คำสั่งตำหนิ / หมายเหตุประกอบ / สรรเสริญของระบบควบคุมเวอร์ชันของคุณเพื่อช่วยในการแทนที่ความคิดเห็นเหล่านี้ จากนั้นเมื่อคุณเรียกใช้บางสิ่งเช่น:

vcs blame file.ext

คุณสามารถดูข้อมูลที่เป็นประโยชน์ซึ่งโดยปกติจะรวมถึงผู้ที่เปลี่ยนแต่ละบรรทัดเมื่อพวกเขาเปลี่ยนแปลงและกระทำรหัส จากคอมมิท id คุณสามารถได้รับข้อความแบบเต็มซึ่งควรรวมถึงบั๊กไอดี

ระบบ VCS ที่ดีจะช่วยให้คุณไม่สนใจช่องว่างเมื่อคำนวณว่าใครแก้ไขบรรทัด

ฉันไม่รู้ว่า Clear Case มีคุณสมบัตินี้อย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.