มันเป็นการดีที่จะแสดงความคิดเห็นด้วยหมายเลขปัญหา?


18

ผมเห็นตัวเลขปัญหามากมายจากความคิดเห็นของรหัส jQuery (ที่จริงแล้วมีปัญหา 69 รายการในรหัส jQuery) ฉันคิดว่ามันจะเป็นแนวปฏิบัติที่ดี แต่ฉันไม่เคยเห็นแนวทางใด ๆ

หากเป็นการปฏิบัติที่ดีแนวทางในการฝึกนี้คืออะไร?

คำตอบ:


22

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


+1 นี่เป็นกรณีสำหรับความคิดเห็นเกี่ยวกับปัญหา jQuery - การไม่มีความคิดเห็นที่นี่จะสร้างความสับสนอย่างรุนแรง
Konrad Rudolph

1
ฉันเองอ้างถึงปัญหาในรหัสเฉพาะเมื่อรหัสเกี่ยวข้องกับวิธีแก้ปัญหาสำหรับปัญหาในรหัสของบุคคลที่สาม การอ้างอิงถึงตัวติดตามปัญหาของคุณเองนั้นเป็นของระบบควบคุมเวอร์ชันไม่ใช่ภายในรหัส สำหรับฐานรหัสขนาดใหญ่คุณสามารถใช้การอ้างอิงที่คล้ายกันสำหรับการแก้ไขปัญหาภายในได้เช่นกัน
Mikko Rantalainen

14

ฉันคิดว่ามันเพียงพอที่จะเพิ่มหมายเลขปัญหาในข้อความยืนยันเมื่อคุณส่งการแก้ไขที่เกี่ยวข้องกับระบบควบคุมแหล่งที่มาของคุณ

ตัวอย่างเช่น:

Bug # 203: การเชื่อมต่อฐานข้อมูลไม่หมดเวลาหลังจาก 30 วินาที

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


ฉันคิดว่าคุณพูดถูก จากนั้นทำไมคุณถึงคิดว่าผู้กระทำการ jQuery ใส่หมายเลขปัญหาไว้ในความคิดเห็น อาจเป็นกรณีพิเศษสำหรับรหัสยอดนิยมหรือไม่
Sanghyun Lee

6
ฉันไม่เห็นด้วย. ความคิดเห็นที่มีการอธิบายว่าทำไมรหัสเป็นวิธีที่เมื่อมันไม่ชัดเจนจากตัวรหัส บั๊กสามารถสร้างบริบทที่ยอดเยี่ยมสำหรับโค้ด "ทำไม" ดังนั้นการเชื่อมโยงไปยังบั๊กจึงมีประโยชน์อย่างมากในการทำความเข้าใจ ต้องบอกว่าผมทำเช่นการเชื่อมโยงไปตั๋วข้อผิดพลาดในการบันทึกการควบคุมแหล่งเช่นกัน แต่ที่มีจุดมุ่งหมายที่แตกต่างกัน
Jeroen

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

1
Jeroen: ฉันไม่เห็นด้วยกับคุณอีก นั่นคือถ้าการแก้ไขข้อผิดพลาดเป็นการแฮ็คที่รวดเร็วและน่าเกลียดคุณควรให้ความเห็นเกี่ยวกับสิ่งนั้นและอ้างอิงข้อผิดพลาด หากการแก้ไขเป็นการแก้ไขที่เหมาะสมจริง ๆ แล้วควรอธิบายว่าทำไมมันเป็นเช่นนั้น ในกรณีอุดมคติไม่ควรมีเหตุผลสำหรับความคิดเห็นใด ๆ และการอ้างอิงถึงจุดบกพร่องในการควบคุมแหล่งข้อมูลก็เพียงพอแล้ว หากการแก้ไขของคุณไม่ใช่การอธิบายตนเองคุณต้องพิจารณาการปรับโครงสร้างใหม่
martiert

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

7

ฉันไม่เห็นด้วยกับโปสเตอร์อื่น ๆ ที่นี่!

ความคิดเห็นเกี่ยวกับโค้ดที่มีการอ้างอิงการติดตามอาจเป็นประโยชน์อย่างมากสำหรับการเขียนโปรแกรมบำรุงรักษา

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

ใช่เรามีการควบคุมซอร์สโค้ด แต่มันค่อนข้างช้าในการตรวจสอบไฟล์และโมดูลแยกกัน คุณต้องการให้สิ่งเหล่านี้กระโดดออกมาหาคุณสำหรับการเปลี่ยนแปลงล่าสุด

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

ฉันคิดว่าการอ้างอิงเล็ก ๆ น้อย ๆ เหล่านี้กับระบบติดตามบั๊กของคุณนั้นดีกว่าที่จะแสดงความคิดเห็นโดยละเอียดในโค้ด


2
หากคุณใช้ระบบรหัสต้นฉบับ / รุ่นที่คุ้มค่าการใช้ระบบควบคุมเวอร์ชันของคุณสามารถยกเลิกรหัสทุกบรรทัดของคุณด้วยการแก้ไขที่เปลี่ยนแปลงได้ ตัวอย่างเช่นค่าเริ่มต้นgit gui blame <filename>ให้ GUI ที่รวดเร็วมากสำหรับการเรียกดูประวัติรหัสถ้าคุณใช้ git การใช้เครื่องมือเพื่อรวมความคิดเห็นของโค้ดเข้ากับประวัติจะช่วยให้สามารถจัดทำเอกสารสำหรับรหัสได้ดีกว่าความคิดเห็นแบบอินไลน์ใด ๆ ที่ทำได้ นั่นคือถ้าคุณไปเขียนข้อความคอมมิชชันที่ดี (ข้อความคอมมิชชันที่ดีควรจะเท่ากับข้อความอีเมลที่อธิบายว่าทำไมจึงควรใช้โปรแกรมแก้ไขนี้)
Mikko Rantalainen

หากคุณเริ่มต้นโครงการตั้งแต่เริ่มต้นโดยใช้ตัวติดตามบั๊กเกือบทุกบรรทัดของรหัสมาจากเรื่องราวของผู้ใช้หรือการแก้ไขข้อผิดพลาดแล้วอะไร คุณแสดงความคิดเห็นทุกบรรทัด?
GabrielOshiro

5

หากคุณสมัครเป็นสมาชิกนโยบาย "รหัสสะอาด" คุณอาจต้องถามตัวเองว่าเป็นวิธีปฏิบัติที่ดีในการเพิ่มความคิดเห็นหรือไม่ หากรหัสสามารถอธิบายได้ด้วยความคิดเห็นเท่านั้นให้แน่ใจว่าเพิ่มรหัสมิฉะนั้นคุณควรจะสามารถเข้าใจได้ง่ายว่าโค้ดของคุณทำอะไรง่าย ๆ เพียงแค่อ่านมัน (หากคุณใช้ชื่อที่เหมาะสมสำหรับตัวแปรวิธีการ ฯลฯ )

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

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

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


4

ฉันคิดว่ามันเป็นแนวปฏิบัติที่ดีในการอ้างถึงปัญหาสำหรับการอ่านเพิ่มเติมในขณะที่ให้คำอธิบายสั้น ๆ ในความคิดเห็นของตัวเอง

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

ตัวอย่างเช่น:

// Verify MAC before checking the padding, to avoid padding oracle attacks
// See issue 123 for details

ในกรณีที่ปัญหา 123 อธิบายว่าการโจมตีนั้นมีลักษณะอย่างไรและทำไมรหัสใหม่จึงมีภูมิคุ้มกันต่อการโจมตีได้

หรือ:

// Using foo's algorithm here, since it fits out usage pattern best
// Check issue 345 for a discussion of possible algorithms, and why foo was chosen.

ปัญหาหลักในการใส่หมายเลขปัญหาลงในแหล่งที่มาของคุณคือตอนนี้คุณมีการอ้างอิงภายนอก ดังนั้นคุณต้องแน่ใจว่าคุณจะไม่แพ้ประเด็นนี้


0

การรวมหมายเลขปัญหาในข้อความยืนยันอาจมีประโยชน์มากเมื่อซอร์สโค้ดของคุณเชื่อมต่อกับการรวมอย่างต่อเนื่อง แอปพลิเคชันเช่น TeamCity จะดึงข้อมูลนั้นออกและอนุญาตให้มีการรายงานที่ดีขึ้น

จากที่กล่าวมาข้างต้นบอกว่าฉันไม่แน่ใจ 100% ว่ามันมาจากความคิดเห็นของโค้ด การรวมหมายเลขปัญหาในรหัสทำงานได้ดีหากหมายเลขปัญหายังคงอยู่ (เช่นคุณไม่เปลี่ยนตัวติดตามปัญหา) และคุณไม่มีปัญหามากสำหรับโครงการที่กำหนด

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

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