🌱 Lập trình C - Chuẩn Misra
Khi mới bắt đầu học lập trình C, chúng ta chỉ quan tâm làm sao để cho chương trình chạy được. Phát triển hơn một chút, chúng ta bắt đầu đi copy code, sửa code của người khác, và chúng ta khám phá Coding Convension, để mọi người có thể dễ dàng giao tiếp với nhau hơn qua các dòng code.
Sau này làm việc trong các hệ thống nhúng, chúng ta sẽ thấy nhiều vấn đề nhức nhối hơn khi code, đặc biệt là các vấn đề liên quan đến bảo mật, và chúng ta có thể sẽ phải tìm hiểu các tiêu chuẩn khi code - Một trong số đó là Chuẩn Misra.
👉 Misra là gì?
MISRA C là một bộ hướng dẫn phát triển phần mềm cho ngôn ngữ lập trình C, được phát triển bởi Tổ chức MISRA . Mục đích là tạo điều kiện cho mã an toàn, bảo mật, tính di động và độ tin cậy trong các hệ thống nhúng, đặc biệt là những hệ thống được lập trình theo tiêu chuẩn ISO C / C90 / C99.
Nhìn chung, các bạn có thể coi Misra như một tiêu chuẩn, thường được sử dụng trong các hệ thống nhúng yêu cầu độ tin cậy và bảo mật cao (Ví dụ : Automotive), và khi code C trong các hệ thống này thì chúng ta sẽ cần tuân thủ Misra để đảm bảo chất lượng phần mềm.
👉 Ví dụ về Misra
- Các rules cần xem xét, có thể bỏ qua nếu khó fix.
- Các rules yêu cầu phải tuân thủ theo, thường kiểu này sẽ cần phải tuân thủ Misra, nếu không tuân thủ thì sẽ phải có comment hợp lý.
- Các rules bắt buộc phải làm, không có comment gì hết 😂
💬 Rule 17.2
Nội dung: Các hàm thì không nên tự gọi mình, dù theo các trực tiếp hay gián tiếp, tức là đệ quy đó 😆 Tức là ở đây người ta khuyên chúng ta không nên dùng đệ quy, trừ khi đệ quy được quản lý rất chặt chẽ, vì nếu không dễ dẫn đến tràn bộ nhớ, vòng lặp vô hạn, ... Gây nguy cơ mất an toàn cho cả hệ thống.
Rules này có thể xếp vào kiểu 2 ở trên, tức là nếu bạn muốn dùng đệ quy thì phải có comment là nó "chặt chẽ" như thế nào.
💬 Rule 19.2
Nội dung: Không nên sử dụng Union - vì Union có thể khiến các biến bị thay đổi giá trị bất cứ lúc nào. Rules này thì thuộc dạng 1 rồi, vì đôi lúc chúng ta vẫn cần dùng Union.
👉 Chi tiết hơn về MISRA C, các bạn có thể tham khảo video sau đây
👉 Các bạn có thể tham khảo khóa học lập trình C full tại đây nhé