10 quy tắc quan trọng để code như những Lập trình viên NASA

19:52 15-04-2021BKAP Media

Có thể bạn đã biết hoặc chưa, những Lập trình viên tại Nasa họ viết code và lập trình những ứng dụng mang nhiệm vụ quan trọng và đảm bảo tính an toàn cao.

Dù, rất khó để thiết lập sự đồng nhất về tiêu chuẩn 'code như thế nào là tốt?', phòng thí nghiệm Sức đẩy phản lực JPL làm them 1 set các hướng dẫn code được gọi là '10 quy tắc cho Lập trình code an toàn'.

Bảng hướng dẫn tập trung phổ biến viết code với ngôn ngữ C nhờ sự kết hợp có thâm niên với ngôn ngữ này, nhưng với những hướng dẫn này bạn có thể hoàn toàn áp dụng cho các ngôn ngữ lập trình khác.

10 quy tắc để viết code cho các nhiệm vụ quan trọng của NASA:

1. Hạn chế tất cả code thành những cấu trúc dòng điều khiển tối giản – không được dùng các statement goto, cấu trúc setjmp hay longjmp, và đệ quy trực tiếp hay gián tiếp.

2. Tất cả vòng lặp phải có giới hạn trên mức cố định. Công cụ kiểm tra phải có khả năng chứng minh 1 cách static rằng 1 preset trên mức cố định trên số lần iteration của vòng lặp không thể bị vượt quá. Nếu giới hạn vòng lặp không thể được chứng minh static, quy tắc được xem là đã vi phạm.

3. Không sử dụng sự phân bổ bộ nhớ dynamic sau khi khởi tạo.

4. Không có function nào được dài hơn những gì được in trên 1 tờ giấy ở định dạng tham chiếu tiêu chuẩn với 1 line trên mỗi statement và 1 line trên mỗi declaration. Thông thường, điều này có nghĩa là không quá 60 line code cho mỗi function.

5. Mật độ xác nhận của code phải trung bình tối thiểu là 2 assertion cho mỗi function. Assertion được dùng để kiểm tra các điều kiện bất thường vốn không nên xảy ra trong việc thực thi ngoài đời thực. Assertion phải luôn không kèm theo các tác dụng phụ và nên được xác định như là Boolean test. Khi assertion thất bại, 1 hành động phục hồi rõ ràng phải được thực hiện, ví dụ: bằng cách trả về 1 điều kiện error cho caller của function mà thực thi assertion thất bại. Bất kỳ assertion cho cái mà tool kiểm tra static có thể chứng minh rằng nó có thể không bao giờ thất bại hay không bao giờ quy phạm quy tắc này (tức là, không thể thỏa mãn quy tắc này bằng cách thêm các statement “assert(true)” vô ích).

6. Các đối tượng dữ liệu phải được khai báo ở phạm vi có mức độ nhỏ nhất có thể.

7. Giá trị trả về của các non-void function phải được kiểm tra bởi mỗi calling function, và tính hợp lệ của các tham số phải được kiểm tra bên trong mỗi function.

8. Việc sử dụng preprocessor phải được giới hạn dựa theo việc bao gồm các tệp tiêu đề và các định nghĩa macro đơn giản. Việc dán Token hay variable argument list (dấu chấm lửng) hoặc các call macro đệ quy không được cho phép. Tất cả các macro phải mở rộng thành các đơn vị cú pháp hoàn chỉnh. Việc sử dụng các chỉ thị compile có điều kiện cũng thường không rõ ràng, nhưng không thể luôn tránh được. Điều này có nghĩa là sự chứng minh cho nhiều hơn 1 hay 2 chỉ thị compile có điều kiện nên hiếm khi xảy ra trong effort lập trình phần mềm lớn, vượt ra ngoài boilerplate tiêu chuẩn để tránh đưa vào cùng 1 tệp tiêu đề. Mỗi lần sử dụng như vậy phải được đánh dấu cờ bởi trình kiểm tra dựa trên bộ công cụ và được chứng minh trong code đó.

9. Việc sử dụng pointer nên bị hạn chế. Đặc biệt, chỉ được cho phép không quá 1 level của dereferencing. Pointer dereference operations không thể được ẩn trong macro definitions hay bên trong typedef declarations. Các pointer function cũng không được cho phép.

10. Tất cả code phải được compile, từ ngày đầu lập trình, với tất cả compiler warning được kích hoạt tại cài đặt mô phạm nhất của compiler. Tất cả code phải compile với những cài đặt này mà không được dính bất kỳ warning nào. Tất cả code phải được kiểm tra hàng ngày ít nhất 1 lần, nhưng tốt hơn là nên nhiều hơn 1, static source code analyzer tiên tiến nhất và nên vượt qua được phần phân tích với 0 warning.

Đây là những gì NASA nên nói về những quy tắc này:

Những quy tắc này cũng giống như cài seatbelt trong chiếc xe hơi của bạn vậy: Ban đầu chúng có thể hơi khó chịu, nhưng sau 1 thời gian sử dụng chúng trở thành bản chất thứ hai và sẽ khó mà tưởng tượng ra điều gì sẽ xảy ra nếu bạn không sử dụng chúng!

#Alt Bulletin


Tham gia Lộ trình Kiến tạo IT 4.0 được 35.000 học viên tin chọn: https://bit.ly/2L0TreC

ƯU ĐÃI HỌC BỔNG "ĐỊA CHẤN IT - BÃO QUÀ MÊ LY" LÊN TỚI 30 TRIỆU KHI ĐĂNG KÝ XÉT TUYỂN TRƯỚC 30/6/2020

  • Bộ quà tặng Chiến binh IT 4S gồm: Smart Laptop, Smart Apple Watch 4, Smart Bicycle (Xe đạp địa hình), Smart Headphone Sony
  • Tặng khóa học Tiếng Anh 2.5 năm
  • Tặng khóa đào tạo kỹ năng mềm NLP 
  • Bộ đồng phục IT Pro cực chất gồm: Balo, Áo khoác gió, Bình nước cầm tay!

Đăng ký nhanh tay - Nhận ngay học bổng: https://bit.ly/30a6K4W


BẢNG VÀNG THÀNH TÍCH VÀ NHỮNG CON SỐ ẤN TƯỢNG TẠI BACHKHOA-APTECH


Bachkhoa-Aptech là đơn vị trực thuộc Aptech Ấn Độ - tập đoàn Công nghệ thông tin (CNTT) hàng đầu trên thế giới. Thương hiệu Aptech đã liên tục 18 năm nhận giải thưởng TOP ICT cho đơn vị đào tạo CNTT xuất sắc nhất Việt Nam. 

  • Địa chỉ: Tòa nhà HTC, 236B & 238 Hoàng Quốc Việt, Bắc Từ Liêm, Hà Nội

  • Hotline: 0968 27 6996

  • Email: tuyensinh@bachkhoa-aptech.edu.vn

   0968276996
< wire:id="wD5Y7bvWmp0pXN44XJlW" wire:initial-data="{"fingerprint":{"id":"wD5Y7bvWmp0pXN44XJlW","name":"embedded.footer","locale":"vn"},"effects":{"listeners":[]},"serverMemo":{"children":[],"errors":[],"htmlHash":"26380eb1","data":[],"dataMeta":[],"checksum":"18801edb20df34d92dc5531955fb23b0c14a128e56c97bd510943079a0a2bcbe"}}"!-- Messenger Plugin chat Code -->