Bài giảng Kỹ thuật lập trình – Chương 8: Lập trình phòng ngừa

38 8 0
Bài giảng Kỹ thuật lập trình – Chương 8: Lập trình phòng ngừa

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Kỹ thuật lập trình – Chương 8: Lập trình phòng ngừa gồm có những nội dung chính sau: Khái niệm, phòng ngừa sai sót về dữ liệu, xử lý lỗi, bảo đảm. Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.

ng c om Trịnh Thành Trung (ThS) trungtt@soict.hust.edu.vn cu u du o ng th an co Bài LẬP TRÌNH PHÒNG NGỪA CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om th an co ng Nội dung cu u du o ng Khái niệm Phịng ngừa sai sót liệu Xử lý lỗi Bảo đảm CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om ng co an th Khái niệm cu u du o ng Lập trình phịng ngừa CuuDuongThanCong.com https://fb.com/tailieudientucntt Lập trình phịng ngừa ng c om Defensive Programming Defensive driving cu u du o ng th an co = CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Lập trình phịng ngừa Defensive programming du o ng th an co ng ▪ Ý tưởng chính: chương trình (CTC) nhận liệu vào bị lỗi chạy thơng, chương trình khác nhận liệu đầu vào bị lỗi ▪ Lập trình phịng ngừa cách tự bảo vệ chương trình khỏi cu u ▫ ảnh hưởng tiêu cực liệu không hợp lệ ▫ rủi ro đến từ kiện tưởng "không bao giờ" xảy ▫ sai lầm lập trình viên khác CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Các lỗi phòng ngừa ng ▪ Lỗi liên quan đến phần cứng co ▫ Đảm bảo lỗi buffer overflows hay divide by zero kiểm soát th an ▪ Lỗi liên quan đến chương trình ng ▫ Đảm bảo giá trị gán cho biến nằm vùng kiểm soát ▫ Do not trust anything; verify everything du o ▪ Lỗi liên quan đến người dùng u ▫ Đừng cho người dùng thực thao tác theo dẫn, kiểm tra thao tác họ cu ▪ Lỗi liên quan đến kỹ thuật phòng ngừa! ▫ Mã nguồn cài đặt kỹ thuật phịng ngừa có khả gây lỗi, kiểm tra kỹ phần CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om ▪ Lập kế hoạch thực công việc: ng Các giai đoạn lập trình phịng ngừa co ▫ Dành thời gian để kiểm tra gỡ rối chương trình cẩn thận : hồn thành chương trình trước ngày so với hạn nộp th an ▪ Thiết kế chương trình: ▫ Thiết kế giải thuật trước viết ngơn ngữ lập trình cụ thể ng ▪ Giữ vững cấu trúc chương trình: cu u du o ▫ Viết kiểm thử phần chương trình: phần chương trình dùng để làm ▫ Viết kiểm thử mối liên kết phần chương trình: quy trình nghiệp vụ ▫ Phịng ngừa điều kiện trước sau gọi phần chương trình: điều phải trước gọi chương trình, điều xảy sau chương trình thực xong ▫ Dùng thích để miêu tả cấu trúc chương trình viết chương trình CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Kiểm tra gì, nào? an co ng ▪ Testing: vấn đề làm chương trình không chạy ▪ Kiểm tra theo cấu trúc chương trình: Kiểm tra việc thực nhiệm vụ đặt cho phần chương trình ng th ▫ Ví dụ: điều xảy với chương trình lề văn bản, hàm ReadWord() bị lỗi ? u du o ▪ Nếu chương trình khơng có tham số đầu vào, mà thực thi nhiệm vụ sinh kết khơng cần kiểm tra nhiều Hầu hết chương trình khơng cu ▫ Ví dụ: điều xảy với chương trình lề văn bản, ▸ Không nhập đầu vào ? ▸ Đầu vào xâu/file chứa từ hay chữ quy định ? CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Kiểm sốt lỗi xảy co ng ▪ Error handling: xử lý lỗi mà ta dự kiến xảy ▪ Tùy theo tình cụ thể, ta trả về: cu u du o ng th an ▫ giá trị trung lập ▫ thay đoạn liệu hợp lệ ▫ trả giá trị lần trước ▫ thay giá trị hợp lệ gần ▫ ghi vết cảnh báo vào tệp ▫ trả mã lỗi ▫ gọi thủ tục hay đối tượng xử lý ▫ thông báo hay tắt máy CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Chắc chắn hay xác? du o ng th an co ng ▪ Chắc chắn: chương trình ln chạy thơng, kể có lỗi ▪ Chính xác: chương trình khơng gặp lại lỗi ▪ Ví dụ: Lỗi thị trình xử lý văn bản: thay đổi nội dung văn bản, phần dịng văn phía hình bị thị sai Khi người dùng phải làm gì? u ▫ Tắt chương trình ▫ Nhấn PgUp PgDn, hình làm cu Ưu tiên tính chắn thay tính xác: ▫ Bất kết thường tốt so với Shutdown CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Kiểm tra để phát lỗi ng ▪ Kiểm tra thao tác gây lỗi viết chương trình an co ▫ Nhập liệu ▫ Sử dụng liệu th ▪ Ví dụ: cu u du o ng ▫ Kiểm tra lần mở tệp tin hay cấp phát ô nhớ ▫ Kiểm tra phương thức người dùng nhập liệu vào khơng cịn nguy gây dừng chương trình ▫ Trong trường hợp tràn nhớ (out of memory), nên in lỗi kết thúc chương trình (-1: error exit); ▫ Trong trường hợp liệu người dùng đưa vào bị lỗi, tạo hội cho người dùng nhập lại liệu (lỗi tên file người dùng nhập sai) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Kiểm sốt lỗi xảy co ng ▪ Error handling: xử lý lỗi mà ta dự kiến xảy ▪ Tùy theo tình cụ thể, ta trả về: cu u du o ng th an ▫ giá trị trung lập ▫ thay đoạn liệu hợp lệ ▫ trả giá trị lần trước ▫ thay giá trị hợp lệ gần ▫ ghi vết cảnh báo vào tệp ▫ trả mã lỗi ▫ gọi thủ tục hay đối tượng xử lý ▫ thông báo hay tắt máy CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Bắt ngoại lệ cu u du o ng th an co ng ▪ Exception: bắt tình bất thường phục hồi chúng trạng thái trước ▪ Giú p chương trình đáng tin cậy hơn, trá nh kết thúc bất thường ▪ Tá ch biẹ t khó i lẹ nh có thẻ gây ngoạ i lẹ và khó i lẹ nh xử lý ………… ngoạ i lẹ IF B IS ZERO GO TO ERROR C = A/B PRINT C GO TO EXIT ERROR: DISPLAY “DIVISION BY ZERO” Khối xử lý lỗi EXIT: END CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ví dụ Bắt ngoại lệ co cmd.ExecuteNonQuery(); ErrorsManager.SetError(ErrorIDs.KhongCoLoi); an try { ng ▪ C# Try u ▪ VB.NET du o ng th } catch { ErrorsManager.SetError(ErrorIDs.SQLThatBai, database.DbName,“ten_strore"); } cu Return CBO.FillCollection(CType(SqlHelper.ExecuteReader(ConStr, "TimHDon", iSoHoaDon), IDataReader),GetType(ThanhToan.ChiTietHDInfo)) Catch ex As Exception mesagebox.show(ex.message) End Try CuuDuongThanCong.com https://fb.com/tailieudientucntt ng ▪ Phục hồi tài nguyên xảy lỗi? c om Phục hồi tài nguyên cu u du o ng th an co ▫ Thường khơng phục hồi tài ngun, hữu ích thực cơng việc nhằm đảm bảo cho thông tin trạng thái rõ ràng vơ hại ▫ Nếu biến cịn truy xuất chúng nên gán giá trị hợp lý ▫ Trường hợp thực thi việc cập nhật liệu, phiên – transaction – liên quan tới nhiều bảng chính, phụ, việc khơi phục có ngoại lệ vô cần thiết (rollback ) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Chắc chắn hay xác? du o ng th an co ng ▪ Chắc chắn: chương trình ln chạy thơng, kể có lỗi ▪ Chính xác: chương trình khơng gặp lại lỗi ▪ Ví dụ: Lỗi thị trình xử lý văn bản: thay đổi nội dung văn bản, phần dịng văn phía hình bị thị sai Khi người dùng phải làm gì? u ▫ Tắt chương trình ▫ Nhấn PgUp PgDn, hình làm cu Ưu tiên tính chắn thay tính xác: ▫ Bất kết thường tốt so với Shutdown CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Khi phải loại bỏ hết lỗi ng ▪ Đôi khi, để loại bỏ lỗi nhỏ, lại tốn ng th an co ▫ Nếu lỗi chắn khơng ảnh hưởng đến mục đích ứng dụng, khơng làm chương trình bị treo, làm sai lệch kết chính, người ta bỏ qua, mà khơng cố sửa để gặp phải nguy khác cu u du o ▪ Phần mềm “chịu lỗi”?: Phần mềm sống chung với lỗi, để đảm bảo tính liên tục, ổn định CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om co an th cu u du o ng Assertion ng Bảo đảm CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Bảo đảm Assertions du o ng th an co ng ▪ Assertion: macro hay chương trình dùng trình phát triển ứng dụng, cho phép chương trình tự kiểm tra chạy ▪ Return true >> OK, false >> có lỗi chương trình ▪ Ghi lại giả thiết đưa code ▪ Loại bỏ điều kiện khơng mong đợi Ví dụ cu u ▫ Nếu hệ thống cho file liệu khách hàng không vượt 50 000 ghi, chương trình chứa assertion số ghi

Ngày đăng: 19/06/2021, 07:15

Tài liệu cùng người dùng

Tài liệu liên quan