Title Image

Blog Logo

Lập trình C - Chuẩn Misra

🌱 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

    Trong chuẩn Misra có rất nhiều Rules, các bạn có thể tìm thấy trong tài liệu mới nhất của Misra, thường thì nó sẽ có 3 trường hợp:
  1. Các rules cần xem xét, có thể bỏ qua nếu khó fix. 
  2. 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ý.
  3. Các rules bắt buộc phải làm, không có comment gì hết 😂
    Dưới đây mình lấy một số ví dụ về Misra - các bạn có thể tìm thấy ở các trang web trên Internet:

    💬 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é

>>>= Follow ngay =<<<

💚 Kênh Youtube Lập trình - Điện tử 💚

Để nhận được những bài học miễn phí mới nhất nhé 😊

Đăng nhận xét

0 Nhận xét