2010-04-05 25 views
6

Bạn kiểm tra lỗi nào? Kiểm tra lỗi nào thực sự cần thiết? Chúng ta có thực sự cần kiểm tra xem một tệp đã được lưu thành công chưa? Không phải nó luôn luôn hoạt động nếu nó được kiểm tra và hoạt động ok từ ngày đầu tiên?Lỗi khi kiểm tra quá mức?

Tôi thấy mình kiểm tra lỗi cho mọi điều nhỏ nhặt và phần lớn thời gian nếu cảm thấy quá mức cần thiết. Những thứ như kiểm tra xem một tập tin đã được ghi vào hệ thống tập tin thành công chưa, kiểm tra xem liệu một câu lệnh cơ sở dữ liệu có thất bại hay không… không phải những thứ này có hoạt động hay không?

Bạn kiểm tra được bao nhiêu lỗi? Có các yếu tố kiểm tra lỗi mà bạn bỏ qua vì bạn tin rằng nó sẽ hoạt động không?

Tôi chắc rằng tôi nhớ đã đọc một nơi nào đó dọc theo dòng "không kiểm tra những điều sẽ không bao giờ thực sự xảy ra" ..... không thể nhớ nguồn mặc dù.

Vì vậy, mọi thứ có thể thất bại đều có thể được kiểm tra không? Hay chúng ta nên tin tưởng vào những hoạt động đơn giản hơn? Ví dụ, nếu chúng ta có thể mở một tập tin, chúng ta có nên kiểm tra xem có đọc từng dòng không thành công hay không? Có lẽ nó phụ thuộc vào ngữ cảnh bên trong ứng dụng hoặc bản thân ứng dụng.

Thật thú vị khi nghe những gì người khác làm.

CẬP NHẬT: Ví dụ: Tôi lưu một đối tượng đại diện cho một hình ảnh trong một bộ sưu tập. Sau đó tôi lưu hình ảnh vào đĩa. Nếu việc lưu tệp không thành công, tôi sẽ phải hiển thị hình ảnh ngay cả khi đối tượng nghĩ rằng có một hình ảnh. Tôi có thể kiểm tra thất bại của hình ảnh được lưu vào đĩa và sau đó xóa đối tượng, hoặc xoay hình ảnh lưu trong giao dịch (đơn vị công việc) - nhưng có thể tốn kém khi sử dụng công cụ db sử dụng khóa bảng.

Xin cảm ơn,

James.

Trả lời

0

Tôi thường tuân thủ các quy tắc này.

  1. Xác thực quá mức nhập của người dùng.
  2. Xác thực API công khai.
  3. Sử dụng Asserts được biên dịch mã sản xuất cho mọi thứ khác.
1

nếu bạn hết dung lượng trống và cố gắng ghi tệp và không kiểm tra lỗi, ứng dụng của bạn sẽ rơi âm thầm hoặc có thông điệp ngu ngốc. tôi ghét khi tôi thấy điều này trong các ứng dụng khác.

+0

có thể bạn nên mua ổ cứng lớn hơn? – Malfist

+1

rất vui nhộn. đó chỉ là một ví dụ. một điều nữa là thiếu quyền viết thư cho một số thư. – Andrey

1

Tôi không giải quyết toàn bộ vấn đề, chỉ là một phần này:

Vì vậy nên tất cả những gì có thể có thể thất bại được kiểm tra cho sự thất bại? Hoặc chúng ta có nên tin tưởng những hoạt động đơn giản hơn không?

Dường như với tôi việc kiểm tra lỗi là quan trọng nhất khi bước TIẾP THEO quan trọng. Nếu không mở được tập tin sẽ cho phép thông báo lỗi bị mất vĩnh viễn, thì đó là một vấn đề. Nếu ứng dụng đơn giản sẽ chết và cho người dùng một lỗi, thì tôi sẽ xem xét một loại vấn đề khác. Nhưng âm thầm chết, hoặc âm thầm treo, là một vấn đề mà bạn nên thực sự làm tốt nhất của bạn để mã chống lại.Vì vậy, cho dù một cái gì đó là một "hoạt động đơn giản" hay không là không liên quan đến tôi; nó phụ thuộc vào những gì xảy ra tiếp theo, hoặc những gì sẽ là kết quả nếu nó không thành công.

0

Về ví dụ của bạn ...

tôi lưu một đối tượng đại diện cho một hình ảnh trong một thư viện. Sau đó tôi lưu hình ảnh vào đĩa. Nếu việc lưu tệp không thành công, tôi sẽ có [no] hình ảnh để hiển thị ngay cả khi đối tượng nghĩ rằng có một hình ảnh. Tôi có thể kiểm tra thất bại của hình ảnh được lưu vào đĩa và sau đó xóa đối tượng, hoặc xoay hình ảnh lưu trong giao dịch (đơn vị công việc) - nhưng có thể tốn kém khi sử dụng công cụ db sử dụng khóa bảng.

Trong trường hợp này, tôi khuyên bạn nên lưu hình ảnh vào đĩa trước tiên trước khi lưu đối tượng. Bằng cách đó, nếu không thể lưu hình ảnh, bạn không phải cố gắng quay lại thư viện. Nói chung, các phụ thuộc nên được ghi vào đĩa (hoặc đặt trong cơ sở dữ liệu) trước tiên.

Để kiểm tra lỗi ... hãy kiểm tra lỗi có ý nghĩa. Nếu fopen() cung cấp cho bạn ID tệp và bạn không gặp lỗi, thì thông thường bạn không cần phải kiểm tra fclose() khi ID tệp đó trả về "ID tệp không hợp lệ". Tuy nhiên, nếu mở và đóng tệp là các tác vụ rời rạc, có thể bạn nên kiểm tra lỗi đó.

0

Đây có thể không phải là câu trả lời bạn đang tìm kiếm, nhưng chỉ có câu trả lời 'đúng' khi xem xét toàn bộ ngữ cảnh của những gì bạn đang cố gắng làm.

Nếu bạn đang viết một nguyên mẫu để sử dụng nội bộ và nếu bạn gặp lỗi lạ, nó không quan trọng, sau đó bạn đang lãng phí thời gian và tiền công ty bằng cách thêm vào kiểm tra thêm.

Mặt khác, nếu bạn đang viết phần mềm sản xuất để kiểm soát không lưu, thì thời gian thêm để xử lý mọi lỗi có thể xảy ra cũng có thể được chi tiêu tốt.

Tôi thấy nó như là một thương mại off - thêm thời gian dành viết mã lỗi so với những lợi ích của việc xử lý lỗi đó nếu và khi nó xảy ra. Xử lý tôn trọng mọi lỗi là không cần thiết tối ưu IMO.

Các vấn đề liên quan