Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 2072

สิ่งที่น่าสนใจจากบทความเรื่อง Last Line Effect

$
0
0

last-line-effect

last-line-effect จากบทความเรื่อง Last Line Effect ทำการศึกษาผลกระทบที่มักเกิดกับการ Copy-and-Paste code ซึ่งแน่นอนว่า developer ส่วนใหญ่ชอบใช้งาน แถมใช้งานกันบ่อย ๆ อีกด้วย และบ่อยครั้งพบว่าการกระทำแบบนี้ก่อให้เกิดความผิดพลาดขึ้นมา
หนึ่งในข้อผิดพลาดนั้นก็คือ code ใน block หรือบรรทัดท้าย ๆ นั่นเอง มาดูผลการศึกษากัน

ผู้ทำการศึกษาได้สรุปและจัดเก็บ bug จากระบบงานต่าง ๆ

ไว้ในรูปแบบของตนเองทำให้ง่ายต่อการศึกษา ซึ่งอยู่ที่ Detected errors database โดย pattern หนึ่งที่ได้ทำการศึกษาคือ Last Line Effect

Last Line Effect มันคืออะไร ?

ในการเขียนโปรแกรมของ developer นั้น บ่อยครั้งมักมี code คล้าย ๆ กันทำงานต่อเนื่องกัน ดังนั้นถ้า developer จะพิมพ์สิ่งที่ซ้ำ ๆ กัน มันก็น่าเบื่อสุด ๆ สิ่งที่ developer มักจะทำก็คือ ทำการ Copy-and-Paste code ที่คล้าย ๆ กันซะ จากนั้นจึงตามไปแก้ไขส่วนที่ต้องการ สิ่งที่ตามมาคือ ความผิดพลาด เนื่องจากเมื่อทำการ copy เยอะ ๆ แล้ว ทำให้ developer หลงลืมไปว่า จะต้องแก้ไขตรงไหนอย่างไรบ้าง !!

มาดูตัวอย่าง code จากการศึกษาเรื่อง Last Line Effect กันบ้าง ?

ซึ่งมักจะเกิดในช่วง ๆ บรรทัดท้ายของโปรแกรม หรือของแต่ละ method หรือในแต่ละ block [gist id="9dfda1eaea9d7fac4fe585e98a8afe6b" file="1.cpp"] คำอธิบาย เห็นบรรทัด z+= หรือไม่ ? ไม่น่าจะเป็นการเพิ่มค่าจาก other.y นะ !! หรือจากเงื่อนไขยาว ๆ ของการเปรียบเทียบ [gist id="9dfda1eaea9d7fac4fe585e98a8afe6b" file="2.cpp"] คำอธิบาย THREADS= มีความยาวเป็น 8 นะ !! หรือว่า copy มาแบบนี้ !! [gist id="9dfda1eaea9d7fac4fe585e98a8afe6b" file="3.cpp"] หรือว่าแบบนี้ ดูผ่าน ๆ หาข้อผิดพลาดยากมาก ๆ !! [gist id="9dfda1eaea9d7fac4fe585e98a8afe6b" file="4.cpp"] หรือเป็นพวกย้ำคิดย้ำทำ !! [gist id="9dfda1eaea9d7fac4fe585e98a8afe6b" file="5.cpp"]
ใครเคยทำแบบนี้บ้างยกมือขึ้น ?

วิธีการแก้ไขนั้นทำได้ไม่ยากเลยนะ

แต่ขอแนะนำให้คิดก่อนว่า การจะเป็น developer ที่ดีต้องทำอย่างไร ? โดยมากแล้วมักจะสร้างข้อผิดพลาดเล็กน้อยขึ้นมาเสมอ
แต่สิ่งที่น่ากลัวกว่าคือ ไม่รู้ว่าตนเองทำผิดพลาด !!
เนื่องด้วยสาเหตุอะไรก็ตาม หลัก ๆ มาจาก feedback loop ของการทดสอบมันนานมาก ๆ ดังนั้นสิ่งที่ควรกระทำสำหรับ developer ที่ดีคือ รู้ข้อผิดพลาดต่าง ๆ ให้รวดเร็วที่สุดเท่าที่จะเป็นไปได้ เพื่อป้องกันและแก้ไขข้อผิดพลาดเหล่านั้น ก่อนที่จะกลายเป็นข้อผิดพลาดอันใหญ่หลวง !! หนึ่งในแนวปฏิบัติคือ Test-Driven Development (TDD) ทำซะ แล้วจะช่วยทำให้คุณรู้ว่า จุดอ่อนและข้อผิดพลาดใน code อยู่ตรงไหน

Viewing all articles
Browse latest Browse all 2072

Trending Articles