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


20

การแสดงความคิดเห็นในปัจจุบันนั้นง่ายกว่าที่เคย ใน Java มีเทคนิคที่ดีในการเชื่อมความคิดเห็นไปยังคลาสและ Java IDEs สามารถสร้างเชลล์ความคิดเห็นให้คุณได้ดี ภาษาเช่น Clojure ช่วยให้คุณสามารถเพิ่มคำอธิบายของฟังก์ชันในโค้ดฟังก์ชันเองเป็นอาร์กิวเมนต์

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

โดยเฉพาะฉันสนใจ Java / Clojure / Python ที่นี่ แต่คำตอบไม่จำเป็นต้องเฉพาะภาษา

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

และที่สำคัญยิ่งกว่า: มี "นโยบายการแสดงความคิดเห็น" หรือกลยุทธ์ที่ยอมรับได้หรือไม่? มีคำแนะนำมากมายเกี่ยวกับวิธีการเขียนโค้ด - แต่จะมีวิธีการอย่างไรในการแสดงความคิดเห็น?

คำตอบ:


40
  • ชื่อ / เอกสารควรบอกคุณว่าคุณกำลังทำอะไรอยู่

  • การใช้งานควรบอกคุณว่าคุณกำลังทำอะไรอยู่

  • ความคิดเห็นควรบอกคุณว่าทำไมคุณถึงทำแบบที่คุณทำ


6
ความคิดเห็นควรบอกคุณด้วยว่าทำไมคุณไม่ทำอย่างอื่น - เช่นตัวเลือกการออกแบบที่สำคัญ - เนื่องจากผู้ดูแลในอนาคตจะไม่มีข้อมูลนี้

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

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

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

14

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

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


1
นี่เป็นการเริ่มต้นที่ดี แต่ฉันคิดว่าจะตอบสนองคำถามของ OP คุณจะต้องเขียนอะไรบางอย่างที่ตอบข้อกังวลที่แท้จริงของเขาเกี่ยวกับการตรวจสอบอัตโนมัติ
Robert Harvey

2
+1 - ฉันคิดว่าควรใช้ความคิดเห็นเพื่ออธิบายว่าทำไมโค้ดจึงถูกเขียนขึ้น ฉันรู้ว่าif (a == b) then c();ไม่ แต่ถ้าผมไม่ทราบว่าทำไมมันไม่ได้ - ที่เมื่อแสดงความคิดเห็นควรใช้ :)
เดโค

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

นอกเหนือจากการเขียนโค้ดที่ชัดเจนเราควรตรวจสอบให้แน่ใจว่าได้เก็บแนวคิด (ระดับรหัส) ความคิด ฯลฯ โดยใช้ความคิดเห็น TODO เช่นถ้าคุณเห็นฟังก์ชัน / คลาสสามารถจัดการขนาดข้อมูลปัจจุบันได้อย่างเหมาะสม แต่อาจไม่สามารถจัดการกับโหลดได้หลังจาก 2 ปีจากนั้นตรวจสอบให้แน่ใจว่าเขียนข้อสังเกตของคุณที่นั่นโดยใช้ความคิดเห็น TODO นักพัฒนาในอนาคตจะขอบคุณความพยายามของคุณ อย่าพยายามจดบันทึกสิ่งเหล่านี้ในเอกสาร txt / word แยกต่างหากในขณะที่เขียนโค้ดไม่มีใครอ้างถึงเอกสารดังกล่าว
TechCoze


5

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


1
และสฟิงซ์เปรียบเทียบรหัสกับเอกสารเพื่อให้ครอบคลุมการวัด
S.Lott

3

หนึ่งในสถานที่ที่มีอำนาจมากที่สุดที่จะหาวิธีการที่จะใช้ความคิดเห็นรหัสในการสร้างเอกสารโดยอัตโนมัติเป็นแน่นอนDoxygen แม้ว่าจะมีเครื่องมือดังกล่าวเพิ่มขึ้นอีก

สิ่งนี้กำหนดมาตรฐานการเขียนความคิดเห็นที่ควรปฏิบัติตามเพื่อสร้างเอกสารโดยอัตโนมัติ อย่างไรก็ตามสิ่งนี้ให้โครงสร้างมากกว่า แต่ไม่ได้ตรวจสอบความหมาย เช่นไม่สามารถตรวจสอบว่าคุณใช้ภาษาอังกฤษที่ทำให้เข้าใจผิดเพื่ออธิบายวัตถุประสงค์ของฟังก์ชั่น!

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

เพื่อให้โค้ดสามารถบำรุงรักษาได้มากขึ้น - เป็นสิ่งที่สำคัญยิ่งกว่าจริง ๆ ว่ามีเอกสารภายนอกที่ช่วยสร้างโครงสร้างของวิธีการปฏิบัติกับรหัสจากนั้นความคิดเห็นภายในโค้ดควรถูก จำกัด ให้ดู

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

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


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

นี่เป็นความคิดเห็นประเภทเดียวที่ฉันเขียนโดยเฉพาะอย่างยิ่งสำหรับวิธีการบันทึกสิ่งที่เกิดขึ้นและสิ่งที่ออกมาจากมัน (ฉันทำงานกับภาษาที่พิมพ์อย่างหลวม ๆ )
DanMan

2

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

มีเทคนิคที่รู้จักกันดี - เรียกว่า "การตรวจสอบโค้ด" และมีน้องสาวชื่อ "การเขียนโปรแกรมคู่" อย่าคาดหวังอะไรเลย "อัตโนมัติ" ที่นี่

และที่สำคัญยิ่งกว่า: มี "นโยบายการแสดงความคิดเห็น" หรือกลยุทธ์ที่ยอมรับได้หรือไม่? มีคำแนะนำมากมายเกี่ยวกับวิธีการตั้งรหัส --- แต่เกี่ยวกับ "วิธีการแสดงความคิดเห็น"

"การกรอกรหัส"ไม่เพียง แต่เกี่ยวกับวิธีการใส่รหัสเท่านั้น แต่ยังรวมถึงบทที่ "วิธีการแสดงความคิดเห็น" โดยเฉพาะอย่างยิ่งในการเขียนรหัสการจัดทำเอกสารด้วยตนเอง


+1 สำหรับรหัสเสร็จสมบูรณ์ Clean Code ของ Robert Martin ยังมีบทที่ดีในการเขียนคำแนะนำที่เป็นประโยชน์ ผมไม่แน่ใจว่าเกี่ยวกับโลก Java แต่ใน .NET โลกเรามี Resharper ซึ่งสามารถ 'โดยอัตโนมัติ' ตรวจสอบการอ้างอิงถึงองค์ประกอบรหัสในความคิดเห็น :)
MattDavey

0

เฉพาะแหล่งจาวาหนึ่งเดียวที่ฉันชอบคือวิธีเขียนความเห็นเอกสารสำหรับเครื่องมือ Javadocของ Oracle :

เอกสารนี้อธิบายถึงแนวทางแบบแผนแท็กและข้อกำหนดเกี่ยวกับรูปภาพที่เราใช้ในความคิดเห็นเอกสารประกอบสำหรับโปรแกรม Java ที่เขียนที่ Java Software, Sun Microsystems

และรายการที่ 44: เขียนความคิดเห็นเอกสารสำหรับองค์ประกอบ API ที่เปิดเผยทั้งหมด :

หาก API นั้นสามารถใช้งานได้จะต้องมีการจัดทำเป็นเอกสาร เอกสาร API แบบดั้งเดิมถูกสร้างขึ้นด้วยตนเองและการทำให้ข้อมูลตรงกันกับรหัสเป็นงานที่น่าเบื่อ สภาพแวดล้อมการเขียนโปรแกรม Java ช่วยให้งานนี้ง่ายขึ้นด้วยยูทิลิตี้ Javadoc Javadoc สร้างเอกสาร API โดยอัตโนมัติจากซอร์สโค้ดพร้อมข้อคิดเห็นเอกสารที่จัดรูปแบบพิเศษรู้จักกันทั่วไปว่าเป็นความคิดเห็นเอกสาร

จากการที่มีประสิทธิภาพ Java ฉบับที่

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