🌱 Tool Auto apply C code style

🌱 Tool Auto apply C code style

    Coding Convension là yếu tố vô cùng quan trọng khi chúng ta triển khai các project với nhiều người, nhiều files, folders. Vậy khi code nhiều thứ như vậy, thì chắc hẳn có lúc sẽ bị quên hoặc nhầm lẫn style hay convension khi code. 

    Bài viết này mình sẽ giới thiệu với các bạn một Tool để có thể phát hiện sai sót style code C, cũng như tự động chỉnh lại cho đúng 😅

    🔻 Funny Notes

Công việc chính là làm việc với những project lớn đó là phát triển module 
và maintain code.
Một tip nhỏ là chúng ta nên check code có sẵn và làm theo nó khi triển khai 
maintain code - Check the surrounding code. 
Vì thật không hay khi phần mà ta maintain lại có style khác với phần code 
có sẵn! Hãy cố gắng thống nhất style và convension.

    👉 Tool C Rules

    Dưới đây là một số Rules sẽ được apply trong tool.

    💬 General Rules

  • Sử dụng chuẩn C99.
  • Không sử dụng phím tabs mà dùng các dấu spaces để thay thế.
  • Dùng 4 dấu spaces thay thế cho dấu tab.
  • Dùng 1 dấu spaces giữa keyword và dấu ngoặc.

/* OK */
if (condition) while (condition) for (init; condition; step) do {} while (condition) /* Wrong */ if(condition) while(condition) for(init;condition;step) do {} while(condition)

  • Không sử dụng dấu space giữa tên function và dấu ngoặc

int32_t a = sum(4, 3); /* OK */
int32_t a = sum (4, 3); /* Wrong */

  • Không sử dụng __ hoặc _ ở đầu tên của variables, functions, macros, types. Và chỉ dùng các ký tự viết thường để đặt tên variables, functions, macros, types, có thể dùng ký tự _ ở giữa. 
  • Sử dụng dấu space sau các dấu phẩy, giữa các toán hạng, phép gán, ...
  • Không nên khởi tạo các biến static hoặc global với giá trị 0 hoặc NULL, vì Compiler sẽ làm điều đó.
  • Luôn khai báo tất cả local variables ở đầu một block/function.
  • Ngoại trừ char, float, double, luôn dùng các types trong thư viện stdint.h.
  • Không sử dụng thư viện stdbool.h. Thay vào đó dùng giá trị 1 và 0.
    Ngoài ra còn rất nhiều Rules khác nữa, các bạn có thể tham khảo trong file Readme.md ở repo bên dưới.

    💬 Comments

  • Không được sử dụng dấu comment //. Luôn dùng /* */ kể cả đối với single line comment. Bởi vì một số compiler sẽ không cho phép sử dụng //.

// This is comment (wrong)
/* This is comment (ok) */

  • Với comment multiple line, kết hợp sử dụng space+asterisk (dấu sao) với mỗi dòng.

/*
* This is multi-line comments,
* written in 2 lines (ok)
*/
/**
* Wrong, use double-asterisk only for doxygen documentation
*/
/*
* Single line comment without space before asterisk (wrong)
*/
/*
* Single line comment in multi-line configuration (wrong)
*/
/* Single line comment (ok) */

    💬 Functions

  • Các hàm cho phép truy cập từ file, module khác đều cần có prototypes.
  • Tên function nên để chữ viết thường, có thể có ký tự _.

/* OK */
void my_func(void); void myfunc(void); /* Wrong */ void MYFunc(void); void myFunc();

    💬 Header/Source Files

  • Cuối mỗi file cần có một dòng trống.
  • Mỗi file cần có chú thích, mô tả ngắn gọn.
  • Các file header phải có include guard #ifndef.
  • Header files cần có phần C++ checking.
  • Với các biến extern thì cần define trong source file và extern trong header file. 

/* file.h ... */
#ifndef ... extern int32_t my_variable; /* This is global variable declaration in header */ #endif /* file.c ... */ int32_t my_variable; /* Actually defined in source */

    👉 Trên đây là các rules chính mà mình muốn nhắc đến, còn rất nhiều rules khác nữa, các bạn có thể tham khảo trong file Readme.md ở repo bên dưới nhé!

    👉 Sử dụng Tool AStyle


        👉 Đường dẫn đến Tool Astyle (Artistic Style) Link Repo.

    Tool này bao gồm 2 file chính: File AStyle.exe astyle-code-format.cfg
    Để chạy tool, các bạn có thể truy cập vào cửa sổ Command Prompt, cd đến folder chứa file 
AStyle.exe. Sau đó chạy Command sau:

astyle --options="astyle-code-format.cfg" "input_path/*.c,*.h"

    Với input_path là đường dẫn đến project cần check style. 

    👉 Ví dụ với hình ảnh trên ta có 2 file là template.ctemplate.h.

    Làm theo các bước trên và chạy command:

  • Đối với project không có file nào bị lỗi style, thì kết quả sẽ như ở trên.
  • Đối với project có file nào đó bị lỗi style, tool sẽ tự động chỉnh lại và cho ra kết quả như dưới đây:

>>>= 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é 😊

    Chúc các bạn học tập tốt 😊
Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn