คุณเขียนชื่อเรื่องในความคิดเห็นของรหัสหรือไม่ [ปิด]


17

ฉันกำลังอ่านรหัสเก่าที่ฉันเขียน (ปีแรกในมหาวิทยาลัย) และสังเกตว่าฉันเคยเขียนชื่อความคิดเห็นก่อนหน้าส่วนต่าง ๆ ของรหัส สิ่งที่ชอบ (นี่คือจากเกม Monopoly):

/*Board initialization*/
...code...

/*Player initialization*/
...code...

/*Game logic starts here*/
/*Displaying current situation*/
...code...

/*Executing move*/
...code...

/*Handle special event*/
...code...

/*Commit changes, switch to next player*/
...code...

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

คำตอบ:


24

นี่คือกลิ่นรหัส นี้บอกอะไรและไม่ได้ว่าทำไม

หากจำเป็นให้แบ่งรหัสเป็นฟังก์ชั่นเล็ก ๆ


4
ไม่มีจุดในการมีฟังก์ชั่นที่จะมีฟังก์ชั่น
พอลนาธาน

30
เป็นขวา: ถ้ารหัสสมควรได้รับการแสดงความคิดเห็นเช่นมันอาจจะควรจะเป็นในการทำงานที่เรียกว่า/*Board initialization*/ InitializeBoardหากโครงสร้างรหัสของคุณชัดเจนเพียงพอคุณจะไม่ต้องแสดงความคิดเห็น
ทิมโรบินสัน

3
"สิ่งที่" เป็นสิ่งที่ดีที่จะรู้และมักจะไม่ชัดเจนจากการดูรหัส ความคิดเห็นเหล่านี้ทำให้เจตนาโดยรวมชัดเจน
DarenW

4
@DarenW - แต่ทำหน้าที่ / โพรซีเดอร์ / เมธอด และต่อมามีการเพิ่มประโยชน์ของ modularizing รหัสซึ่งทำให้ง่ายต่อการเข้าใจ
สตีเฟ่นซี

3
ข้อดีอีกอย่างของสิ่งนี้คือฟังก์ชั่นเช่นInitializeBoardหรือInitializePlayerจะปรากฏในรายการเบราว์เซอร์ฟังก์ชั่น / โมดูล / คลาสของ IDE ส่วนใหญ่ในขณะที่ความคิดเห็นจะไม่ การนำทางที่ง่ายขึ้น
Steve Fallows

13

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


7
+1 - ความชัดเจนเป็นสิ่งที่ดี ฉันไม่เห็นด้วยกับคำตอบที่ได้รับอนุมัติว่าเป็นกลิ่นรหัส ถ้ามันเพิ่มความชัดเจน - ทำมัน
quick_now

2
หากละเมิด OAOO อย่าทำเช่นนั้น มันซ้ำซ้อนและมีแนวโน้มที่จะไม่ซิงค์กับรหัสที่เป็นเอกสาร ใส่รหัสลงในฟังก์ชั่นและตั้งชื่อฟังก์ชั่นด้วยสิ่งที่มันทำ Modern IDE's ทำให้ง่ายต่อการเปลี่ยนชื่อฟังก์ชันและอัพเดตการอ้างอิงทั้งหมด ด้วยวิธีนี้ทุกอินสแตนซ์จะเป็นปัจจุบัน
Scott Whitlock

3
+1 จากฉัน ในไฟล์รหัสขนาดใหญ่ฉันชอบที่จะมีมากกว่าเพียงแค่ช่องว่างแยกส่วนตรรกะ ใช่ฉันคิดว่าถ้าฟังก์ชั่นของคุณเป็น loooooong คุณต้องแยกมันออก แต่ฉันคิดว่ามันอ่านง่ายกว่ามากถ้าแยกส่วนต่าง ๆ ด้วยความคิดเห็น
Anthony

6

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


4

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

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


3

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

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

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


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

2

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

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