Tại sao lại có một lỗi rất phổ biến và chúng ta có thể làm gì để ngăn chặn chúng?


20

Có vẻ như các lỗi ngoại tuyến là một trong những lỗi lập trình phổ biến nhất (nếu không phải là phổ biến nhất) (xem /software/109/what-are-common-mistakes-in-coding và trí tuệ thông thường).

Lý do những điều này là rất phổ biến, nó có liên quan gì đến cách thức hoạt động của bộ não con người?
Chúng ta có thể làm gì để ngăn chặn con mồi rơi xuống bởi một lỗi?


8
Chúng có phổ biến không? Tôi đang tạo ra một số lỗi khá lớn của mình, nhưng các lỗi khác thường rất hiếm khi xảy ra. Có lẽ bởi vì tôi chủ yếu sử dụng Python, tức là sử dụng các trình vòng lặp thay vì tung hứng với các chỉ số? (Và: Điều đó cho chúng ta biết điều gì ?;))

Bạn càng ít phải suy nghĩ, bạn càng làm việc hiệu quả?
Malfist

@del Nam: Tôi đồng ý. Lỗi do lỗi thường là lỗi đầu tiên được phát hiện khi tôi mã hóa (trước khi tôi chuyển sang "giai đoạn thử nghiệm" chính thức).
Thất vọngWithFormsDesigner

7
Tôi gần như đã trả lời câu hỏi trước đó do nhầm lẫn ...
DevSolo

> Chúng ta có thể làm gì để ngăn chặn con mồi rơi xuống bởi một lỗi? Sử dụng một trình vòng lặp .
Jim G.

Câu trả lời:


18

Nó là một cái gì đó để làm với bộ não của con người hoạt động. Chúng tôi có dây là "đủ tốt" cho các nhiệm vụ thường không yêu cầu độ chính xác ở cấp độ kỹ thuật. Có một lý do tại sao các trường hợp chúng ta gặp khó khăn nhất để xử lý được gọi là các trường hợp "cạnh".

Có lẽ cách tốt nhất để tránh các lỗi khác nhau là đóng gói. Ví dụ: thay vì sử dụng vòng lặp for lặp lại một bộ sưu tập theo chỉ mục (từ 0 đến đếm - 1), hãy sử dụng vòng lặp cho mỗi kiểu với tất cả logic về nơi dừng được tích hợp vào bộ liệt kê. Bằng cách đó, bạn chỉ phải đạt được giới hạn ngay một lần, khi viết điều tra viên, thay vì mỗi lần bạn lặp qua bộ sưu tập.


6
+1 cho đóng gói. Các lỗi xấu nhất mà tôi từng gặp là khi một phần của chương trình dựa trên 1 và một phần dựa trên 0, và mỗi chức năng duy nhất được sử dụng, bạn phải nhớ nó là gì và bạn có phải thực hiện chuyển đổi hay không và hướng nào để đi. Một vài tháng trước, tôi đã phải theo dõi một off-by- khó khăn 2 lỗi vì đóng gói nghèo có nghĩa là ai đó làm off-by-1 sai sót trong hai nơi kép riêng biệt. Có những chuyển đổi ở khắp mọi nơi không thể theo dõi và tôi đã có thể chuyển nó xuống một chuyển đổi trong một phương thức.
Karl Bielefeldt

2
Tôi muốn tìm hiểu thêm về khoa học về điều này nếu có ai có thêm thông tin. Tôi cũng nghĩ rằng đây là lý do tại sao phong cách lập trình, như CSS, rất khó chịu khi mọi thứ đều có cạnh ...
Công ty Laser

7

Có một cái gì đó đặc biệt về cách não xử lý các đường viền và cạnh.

Mặc dù bộ não dễ suy nghĩ hơn về phạm vikhông gian , nhưng việc tập trung vào một cạnh dường như đòi hỏi sự chú ý nhiều hơn. Đây là cách nó xảy ra, mất chú ý trong giây lát hoặc không đủ tập trung và bạn đã bỏ lỡ biên giới.

Một sự bổ sung nhỏ khác cho vấn đề là các môi trường lập trình khác nhau có các hệ thống lập chỉ mục khác nhau bắt đầu từ 0 hoặc 1, điều này có thể gây thêm nhầm lẫn cho những người chủ động tiếp xúc với cả hai loại môi trường.


4

Tôi tin rằng đó là do chuyển đổi bối cảnh. Trong cuộc sống hàng ngày của chúng ta, chúng ta có xu hướng sử dụng các chỉ mục dựa trên 1. Do đó, bộ não của chúng ta không thể ghi hành vi chính xác vào bộ nhớ dài hạn.


2
Và sau đó là niềm vui của việc chuyển đổi giữa các langau lập trình mà chỉ số DO bắt đầu từ 1 (chẳng hạn như PL / SQL).
Thất vọngWithFormsDesigner

3
+1 cho điều đó. Đánh số 1 chỉ số trả lời câu hỏi "có bao nhiêu?", Ánh xạ này gọn gàng cho hầu hết các nhiệm vụ trong thế giới thực. Chỉ mục 0 là về "vị trí của mỗi mục trong vị trí nào?", Được sử dụng ít hơn trong không gian.
Dan Ray
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.