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


20

ดูเหมือนว่าข้อผิดพลาดทั่วไปเป็นหนึ่งในข้อผิดพลาดทั่วไปของโปรแกรมมิง (ถ้าไม่ใช่มากที่สุด) (ดู/software/109/what-are-common-mistakes-in-codingและภูมิปัญญาดั้งเดิม)

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


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

ยิ่งคุณต้องคิดให้มากเท่าไร
Malfist

@delnan: ฉันเห็นด้วย ข้อผิดพลาดแบบไม่ต่อเนื่องมักจะเป็นข้อผิดพลาดแรกเมื่อฉันเข้ารหัส (ก่อนที่ฉันจะย้ายไปที่ "ขั้นตอนการทดสอบ" อย่างเป็นทางการ)
FrustratedWithFormsDesigner

7
ฉันเกือบจะตอบคำถามก่อนหน้านี้โดยไม่ได้ตั้งใจ ...
DevSolo

> เราสามารถทำอะไรได้บ้างเพื่อป้องกันไม่ให้เหยื่อล้มลงด้วยข้อผิดพลาดเดียว? ใช้iterator
จิมจี

คำตอบ:


18

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

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


6
+1 สำหรับการห่อหุ้ม ข้อบกพร่องแบบหนึ่งต่อหนึ่งที่เลวร้ายที่สุดที่ฉันเคยเห็นคือเมื่อส่วนหนึ่งของโปรแกรมเป็นแบบ 1 และส่วนเป็นแบบ 0 และทุกฟังก์ชั่นเดียวที่ใช้คุณต้องจำว่ามันคืออะไรและไม่ว่าคุณจะต้อง ทำแปลงหรือไม่และทิศทางที่จะไป สองสามเดือนที่ผ่านมาฉันต้องติดตามข้อผิดพลาดแบบออฟ - ทู -2ยากเพราะการห่อหุ้มไม่ดีหมายความว่ามีคนทำผิดพลาดโดย 1 ในสถานที่ประกอบกันสองแห่ง มีการแปลงทั่วทุกสถานที่ที่เป็นไปไม่ได้ที่จะปฏิบัติตามได้และฉันก็สามารถที่จะได้รับมันลงไปหนึ่งแปลงในหนึ่งวิธี
Karl Bielefeldt

2
ฉันชอบที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิทยาศาสตร์ของเรื่องนี้ถ้าใครมีข้อมูลเพิ่มเติม ฉันยังคิดว่านี่คือเหตุผลที่สไตล์การเขียนโปรแกรมเช่น CSS เป็นที่น่าผิดหวังมากที่ทุกอย่างเป็นขอบ ...
Company Laser

7

มีบางอย่างที่พิเศษเกี่ยวกับวิธีที่สมองจัดการกับเส้นขอบและขอบ

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

อีกเล็กน้อยนอกเหนือจากปัญหาคือสภาพแวดล้อมการเขียนโปรแกรมที่แตกต่างกันมีระบบการจัดทำดัชนีที่แตกต่างกันเริ่มต้นที่ 0 หรือ 1 ซึ่งอาจเพิ่มความสับสนให้กับคนที่สัมผัสกับสภาพแวดล้อมทั้งสองประเภท


4

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


2
และจากนั้นก็มีความสนุกในการสลับระหว่างการเขียนโปรแกรม langauges ซึ่งดัชนี DO เริ่มต้นที่ 1 (เช่น PL / SQL)
FrustratedWithFormsDesigner

3
+1 สำหรับสิ่งนั้น การกำหนดหมายเลข 1 ดัชนีจะตอบคำถามที่ว่า "มีมากน้อยเพียงใด" ซึ่งแมปอย่างเรียบร้อยกับงานในโลกแห่งความเป็นจริงมากที่สุด 0-indexed เกี่ยวกับ "ตำแหน่งใดบ้างในแต่ละรายการ" ซึ่งใช้น้อยกว่าใน meatspace
Dan Ray
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.