เทียบกับการจัดทำรหัสตนเอง แสดงความคิดเห็นรหัส


22

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

เมื่อต้นเดือนที่โพสต์นี้ถูกสร้าง:

http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-programmer/

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

ในตัวอย่างที่กำหนด

// Get the extension off the image filename  
$pieces = explode('.', $image_name);  
$extension = array_pop($pieces);  

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

$extension = GetFileExtension($image_filename);

อย่างไรก็ตามในความคิดเห็นที่มีคนให้คำแนะนำนั้น:

http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-programmer/comment-page-2/#comment-357130

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

ทุกคนมีความเห็นอย่างไรกับรหัสอธิบายตนเองเทียบกับรหัสความคิดเห็น?


1
@ Péter - ฉันลองดูที่หนึ่ง แต่ฉันต้องการรับความเห็นส่วนตัวระหว่างคนทั้งสองมากกว่าที่จะกำหนดความคิดเห็นว่าเป็นรหัสที่มีกลิ่นหรือไม่
Phill

2
ฉันพบว่าบทความ .... น่ากลัวในการอ่าน ดูถูกมาก
sevenseacat

@Karpie - ฉันทำอย่างนั้น :(
Phill

3
"ทำไมคุณถึงเป็นโปรแกรมเมอร์ PHP ที่ไม่ดี" คำตอบ: เพราะคุณกำลังเขียนโปรแกรมใน PHP
Thomas Eding

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

คำตอบ:


46

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

แน่นอนว่านี่ไม่ได้หมายความว่าเราไม่ควรใช้ความเห็น - พวกเขามีบทบาท แต่ IMHO คุณควรใช้ความระมัดระวัง คำตอบก่อนหน้านี้ของฉันใน SOอธิบายความคิดของฉันในหัวข้อโดยละเอียด

แน่นอนตามที่ @Niphra กล่าวไว้มันคุ้มค่าที่จะตรวจสอบอีกครั้งว่าสิ่งที่ฉันเชื่อว่าสะอาดเป็นสิ่งที่คนอื่นเข้าใจได้ อย่างไรก็ตามนี่เป็นคำถามของการฝึกฝนเช่นกัน ย้อนกลับไปใน uni ฉันเขียนโค้ดที่คลุมเครือเพียงเพราะใช้ชื่อแปลก ๆ และตลกสำหรับเอนทิตีรหัสทั้งหมดตามที่ฉันต้องการ จนกว่าครูของฉันจะโยนงานชิ้นใดชิ้นหนึ่งของฉันกลับมาอย่างสุภาพสังเกตว่าเขาไม่สามารถเข้าใจได้ว่าวิชาใดเป็นวิชาหลัก :-) นั่นเป็นบทเรียนที่ดีดังนั้นฉันจึงพยายามจดจ่อกับการเขียนรหัสที่อ่านได้มากขึ้นเรื่อย ๆ ทุกวันนี้ฉันไม่ค่อยได้รับคำร้องเรียนจากเพื่อนร่วมทีมเลย


ฉันรักหนังสือที่ :)
Phill

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

9
หนึ่งในคำพูดที่ชื่นชอบจากรหัสสะอาดคือความคิดเห็นทุกความล้มเหลวในการแสดงตัวเองในรหัส
Doval

6
@Doval: เป็นปรัชญาที่น่าสนใจอย่างน้อยในเรื่องเกี่ยวกับการแสดงความคิดเห็นเกี่ยวกับสิ่งที่มีรหัสไม่ ในทางตรงกันข้ามความคิดเห็นที่มีประโยชน์ที่สุดบางอย่างอาจเป็นเพราะเหตุใดโค้ดจึงไม่ทำสิ่งใด - แนวคิดที่ฉันไม่คิดว่าควรจะแสดงรหัส
supercat

1
ไม่เห็นด้วยอย่างสิ้นเชิง ไม่มีการตั้งชื่อจำนวนใดที่จะอธิบายถึงวัตถุประสงค์ของตรรกะอย่างสมบูรณ์
Kolob Canyon

65

คุณไม่ควรจัดทำเอกสารสิ่งที่รหัสกำลังทำอยู่ แต่คุณควรจัดทำเอกสารสาเหตุที่ทำ

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

ความคิดเห็นอื่น ๆ ทั้งหมดสามารถกำจัดได้อย่างปลอดภัย


3
+1 ตัวอย่างในบทความที่เชื่อมโยงกล่าวว่า "แสดงความคิดเห็นในทุกสถานการณ์ที่จุดประสงค์ของรหัสที่ฉันเขียนไม่ปรากฏขึ้นทันที" - เป็นเรื่องโง่ที่จะเชื่อว่ารหัสด้วยตัวเองสามารถสื่อสารกับวัตถุประสงค์ได้เพราะเครื่องจักรไม่มีแนวคิดของจุดประสงค์ ตัวอย่างตัวนับ: เรามีข้อบกพร่องในซอฟต์แวร์เกือบทั้งหมดที่เคยเขียนมานี่คือความจริงอย่างแท้จริง หากคอมพิวเตอร์เข้าใจจุดประสงค์ ( สาเหตุ ) มันก็จะปฏิเสธที่จะทำสิ่งอื่นนอกจากสิ่งที่เราตั้งใจแทนที่จะทำหน้าที่ตามอำเภอใจสร้างสิ่งที่ / เมื่อ / อย่างไร / ที่ไหนที่นำไปสู่ข้อผิดพลาด
David Meister

รหัสทั้งหมดในฟังก์ชั่นควรอยู่ที่นั่นเพื่อให้บรรลุวัตถุประสงค์ของฟังก์ชั่นนั่นคือสิ่งที่มันทำเช่นเขียนข้อความลงในไฟล์ฟังก์ชั่น "writeTo (ข้อความ String, ไฟล์ไฟล์)" หากรหัสบางอย่างมีจุดประสงค์ที่แตกต่างกันเช่นการตรวจสอบเงื่อนไขเบื้องต้นเช่นการตรวจสอบว่ามีไฟล์อยู่และไม่ปรากฏให้เห็นบางทีความคิดที่ดีกว่าความคิดเห็นคือการเขียนฟังก์ชั่นใหม่เช่น "checkWritable (ไฟล์ไฟล์)" คุณภาพของรหัสไม่ใช่รายการตรวจสอบที่ไร้เหตุผล แต่หากต้องการความคิดเห็นนั่นเป็นสัญญาณที่ไม่ดีและ "whys" ไม่ใช่เหตุผลที่ดีที่จะต้องใช้ ทำไมไก่ถึงข้ามถนน?
Trylks

2
@Trylks ที่เหมาะกับบางกรณี แต่ไม่ใช่สำหรับทุกคน for (int i = 0; i < length/2;i++) { //if length is odd, the middle element should stay in placeจินตนาการสถานการณ์นี้: ตอนนี้นี่ไม่ใช่สิ่งที่ชัดเจนจากจุดประสงค์ของฟังก์ชั่นการปิดล้อมและไม่สามารถแยกออกเป็นฟังก์ชันของตัวเองได้ หากคุณไม่ใส่เครื่องหมายข้อคิดเห็นไว้แสดงว่าไม่ดี ดังนั้นคุณเพิ่มความคิดเห็นเพื่อชี้แจงเจตนาของคุณ
biziclop

2
@Trylks นอกจากนี้แม้ว่าเราจะยกตัวอย่างของคุณคุณแยกตัวออกจากการตรวจสอบของคุณเป็นวิธีการและเรียกมันว่ายอดเยี่ยม ตอนนี้สิ่งที่คุณต้องอธิบายคือทำไมคุณต้องตรวจสอบว่าไฟล์นั้นเขียนได้ :)
biziclop

38

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

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

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


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

PS, ฉันรู้ว่าฉัน kinda 'zombied' :) ขอโทษสำหรับสิ่งนั้น
Powerslave

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

19

โชคดีที่ค่ายทั้งสองในการสนทนานี้มีตัวแทนอยู่ที่นี่และมีการกล่าวถึงข้อโต้แย้งทั้งด้านโปรและการต่อต้าน

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

อาร์กิวเมนต์ที่ทับซ้อนกัน

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

ตอนนี้ความแตกต่างที่สำคัญคือมีน้ำหนักเท่าไรในข้อโต้แย้งเหล่านั้น

รหัสอธิบายตนเอง

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

ความคิดเห็นเพิ่มเติม

  • ความคิดเห็นสามารถอ่านได้มากกว่ารหัส ภาษาอังกฤษธรรมดาดีกว่าในการอธิบายบางสิ่งบางอย่าง

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

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

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

ในทางกลับกันคุณมักจะเห็น API ของทุกฟังก์ชั่นที่ถูกคอมเม้นต์เพียงเพราะ 'ความคิดเห็นดี' สิ่งที่ควรได้รับการแสดงความคิดเห็นยังคงไม่ได้


1
@Steven - "ในทางกลับกันคุณมักจะเห็น API ของทุกฟังก์ชั่นที่ถูกคอมเม้นท์เพียงเพราะ 'ความคิดเห็นดี' สิ่งต่าง ๆ ที่ควรได้รับการแสดงความคิดเห็นยังคงไม่อยู่" ฮึจริงจริงช่างน่าผิดหวังจริงๆ!
dss539

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

5

"ฉันขอโทษ แต่ผู้ชายคนนั้นของคุณ"

ฉันสงสัยว่าทำไมเขาถึงไม่แสดงความคิดเห็น: P

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

เงยหน้าขึ้นมองการเขียนโปรแกรมความรู้เป็นสไตล์ที่รุนแรง


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

3

คำตอบที่สั้นกว่าดีกว่าและถูกต้อง

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

คำตอบที่ดีกว่าความคิดเห็นควรใช้เพื่ออธิบายว่า "ทำไม" เท่านั้นความคิดเห็นควร:

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

คำอธิบายการสำรองข้อมูล

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

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

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

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


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

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

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

but isn't it faster and easier to read the comment at the top saying what that section of code does and skip it altogether if it's not what I'm looking forมันเรียกว่า "ชื่อของวิธีการ / ฟังก์ชั่น" หากคุณมีบล็อกของรหัสที่ไม่มีชื่อ แต่ตราบใดที่คุณไม่สามารถรับมันได้ด้วยการมองแวบเดียวอาจเป็นปัญหาที่เกิดขึ้น
biziclop

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

2

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


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

+1 นี่เป็นคำถามที่ผู้ชมของคุณรู้จัก ใครมีแนวโน้มที่จะใช้ฟังก์ชั่นนี้? คุณจะช่วยพวกเขาได้อย่างไร ความช่วยเหลือของคุณจะคุ้มค่าอะไร คุ้มค่ากว่าการใช้เวลาสักครู่เพื่อเพิ่มความคิดเห็นหรือไม่ อื่น ๆ ฯลฯ ฯลฯ
PeterAllenWebb

2
@PeterAllenWebb: ไม่ชี้ไปที่ความคิดเห็นนั้นเลย แต่นั่นไม่ได้หมายความว่าฟังก์ชั่นไม่ควรถูกแสดงความคิดเห็น มันควรจะ. "ส่วนขยาย" รวมจุดหรือไม่ ค่าตอบแทน"foo"คืออะไร? ( null?? "") เพื่อ"foo."? จะส่งnullผลให้เกิดข้อยกเว้นหรือฟังก์ชั่นจะส่งคืนบางสิ่งบางอย่าง (อาจnull)?
TJ Crowder

2

สิ่งที่มีรหัสการจัดทำเอกสารด้วยตนเองคือภายในฟังก์ชั่นนั้นคุณจะพบ:

$pieces = explode('.', $image_name);  
$extension = array_pop($pieces);  

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

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


ใช่. ฉันคิดว่าคุณต้อง "ฝึกฝน" เพื่อคิดว่ามันควรจะเป็นอย่างใดอย่างหนึ่งและไม่ได้ทั้งสองอย่าง
PeterAllenWebb

2

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


สมมติว่ามีเหตุผลสำหรับทุกสิ่งก็ควรได้รับการแสดงความคิดเห็น?
JeffO

ใช่แน่นอน นั่นเป็นเหตุผลที่ฉันเชื่อว่าวิธีที่ดีที่สุดในการแสดงความคิดเห็นรหัสของคุณคือการเขียนโปรแกรมอย่างแท้จริง
SK-logic

1

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

$ extension = GetFileExtension ($ image_name);

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

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


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

2
@ Matt:“ ไม่ชัดเจน” เป็นเครื่องบ่งชี้ว่าคุณไม่ได้ทำการบำรุงรักษาบ่อยนัก การบันทึกอย่างชัดเจนทำให้เกิดรอยขีดข่วนส่วนใหญ่ (และ RTFSource) ในภายหลังและยังบันทึกถึงสิ่งที่ผู้เขียนต้นฉบับคาดไว้ ไม่ว่าจะเป็นในความคิดเห็นหรือในชื่อฟังก์ชั่นยาวไม่สำคัญนัก
Donal Fellows

บางทีตัวอย่างอาจเป็นคำถามที่ไม่ดีที่ใช้ในคำถามนี้ฉันไม่ได้แตะ PHP ในเวลาประมาณ 7 ปีทำ C # และ Java นิดหน่อยดังนั้นฉันจึงเคยมี IDE ที่บอกประเภทที่ส่งคืนหรือ ประกาศประเภท
Phill

1
@ Donal Fellows: มันบอกว่าไฟล์เอกพจน์ มีอะไรคลุมเครือเกี่ยวกับเรื่องนั้น? มันชัดเจนอย่างสมบูรณ์
Matt Ellen

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

1

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


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

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

1
@ SK-logic:public <T> void hit(T item);
Michael K

@Michael - อย่างแน่นอน ผู้ใช้จะทราบได้อย่างไรว่าวัตถุประเภทใดที่สามารถและควรใช้ค้อนทุบ? ถึงแม้จะมีระบบพิมพ์ที่ดีกว่ามาก แต่ก็ไม่ชัดเจนเสมอไปนักพัฒนาซอฟต์แวร์ได้วางแผนการใช้งานช่วงใดบ้าง
SK-logic

1

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

เพียงแค่พยายามไม่ฉลาดเพราะรหัสที่ฉลาดอ่านแล้วน่ากลัว คำหลัก: บำรุงรักษา !

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

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


1

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

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

EBITDA

และไม่

EquityBeforeInterestTaxesDepreciationAndAmortization

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


1

ฉันคิดว่าเราต้องแยกความแตกต่างระหว่างเอกสารและการแสดงออกของรหัส

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

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


1

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

//
// iterative version
//
Node* ReverseList( Node ** List ) 
{

  Node *temp1 = *List;
  Node * temp2 = NULL;
  Node * temp3 = NULL;

  while ( temp1 )
  {
    *List = temp1; //set the head to last node 
    temp2= temp1->pNext; // save the next ptr in temp2
    temp1->pNext = temp3; // change next to privous
    temp3 = temp1;
    temp1 = temp2;
  }

  return *List;
}

1

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


0

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

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

IMO: รหัสเอกสารด้วยตนเองคือรหัสที่ชื่อตัวแปรและวิธีการได้รับชื่อที่มีความหมายและบริบทเพื่อให้พวกเขาอธิบายถึงวัตถุประสงค์ของพวกเขา


0

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

และในกรณีที่ไม่น่าเป็นไปได้มันยังไม่ชัดเจนว่ารหัสกำลังทำอะไรอยู่และคุณจำได้ว่าต้องขอความช่วยเหลือจากเพื่อนของคุณ ถ้าอย่างนั้นเราทุกคนขอบคุณที่ช่วยพัฒนา Linux cuz เป็นเคอร์เนลโค้ดที่คุณเขียนใช่มั้ย ถ้าไม่ล้างซ้ำจากด้านบน :)

เพียงแค่ใส่ไม่ได้เขียนว่าคุณเป็นความคิดเห็นรหัสพวกเขา


0

ลองดู Code Complete 2nd edition, pg 128-129

ประเภทข้อมูลนามธรรมจะช่วยให้คุณประหยัดจากปริศนานี้ รหัสเอกสารด้วยตนเองเป็นวิธีที่จะไป ความคิดเห็นมีประโยชน์ แต่มี

เอนทิตีในโลกแห่งความจริงมากกว่าการใช้งานในระดับต่ำ

คุณสามารถหลีกเลี่ยงการใช้ความคิดเห็น

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

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


0

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


0

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

หากคุณจำเรื่องนี้ไว้ตอนเขียนโปรแกรม /?

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

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

ดังนั้นนิสัยของคุณที่คิดว่ารหัสเอกสารนั้นเป็นของตัวเอง

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

ตรวจสอบhttp://thedailywtf.comพวกเขามีเรื่องราวที่ตลกขบขันมากมาย แต่เป็นเรื่องจริงเกี่ยวกับโปรแกรมเมอร์ที่เพิ่งไม่ได้ขยันเนื่องจาก ..

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