Danh mục

Bài giảng Kỹ thuật lập trình - Bài 6: Lập trình phòng thủ

Số trang: 55      Loại file: pdf      Dung lượng: 816.10 KB      Lượt xem: 16      Lượt tải: 0    
10.10.2023

Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Kỹ thuật lập trình - Bài 6: Lập trình phòng thủ trình bày về khái niệm, xử lý rác, bảo đảm, xử lý lỗi, gỡ lỗi. Bên cạnh đó, những bài tập được đưa ra ở cuối bài giảng sẽ giúp cho các bạn hiểu rõ hơn về điều này.
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Bài 6: Lập trình phòng thủBài 6LẬP TRÌNH PHÒNG THỦTrịnh Thành Trungtrungtt@soict.hust.edu.vn1KHÁI NIỆM-Khái niệm• Lập trình phòng thủ - Defensive Programming: Xuất phát từkhái niệm defensive driving.• Khi lái xe bạn luôn phải tâm niệm rằng bạn không bao giờ biếtchắc được người lái xe khác sẽ làm gì. Bằng cách đó, bạn cóthể chắc chắn rằng khi họ làm điều gì nguy hiểm, thì bạn sẽkhông bị ảnh hưởng (tai nạn).• Bạn có trách nhiệm bảo vệ bản thân, ngay cả khi người kháccó lỗi• Trong defensive programming, ý tưởng chính là nếu chươngtrình (con) được truyền dữ liệu tồi, nó cũng không sao, kể cảkhi với chương trình khác thì sẽ bị fault.• Một cách tổng quát, lập trình phòng thủ nghĩa là: làm thế nàođể tự bảo vệ mình khỏi thế giới lạnh lùng, tàn nhẫn của dữ liệukhông hợp lệ, các sự kiện mà có thể không bao giờ xảy ra, vàcác lập trình viên khác ‘sai lầm’Invalid inputs• Trong thực tiễn: “Garbage in, garbage out.”• Trong lập trình “rác rưởi vào – rác rưởi ra” là điềukhông chấp nhận• Một chương trình tốt không bao giờ sãn xuất ra rácrưởi, bất kể đầu vào là gì !• Với 1 chương trình tốt thì: ”rác rưởi vào, không có gìra”, “rác rưởi vào, có thông báo lỗi” hoặc “khôngcho phép rác rưởi vào”.• Theo tiêu chuẩn ngày nay, “garbage in, garbageout” là dấu hiệu của những chương trình tồi, khôngan toànVí dụswitch(value1){case 1:value2 = 1;break;case 2:value2 = 4;break;}return(1 / value2);for (int i = 0;for (double i =khong bi thayfor (double i =i != limit; i++) {...}0; i != 10.0; i += 1) // safe neu idoi trong than vong lap0; i != 1.0; i += 0.1) // not ok ?

Tài liệu được xem nhiều: