Code convention là gì? Các quy tắc khi viết code cần nắm
Chất lượng của code có thể được cân nhắc dựa trên nhiều khía cạnh và tiêu chí khác nhau, không chỉ định dạng mà các lập trình viên còn phải tuân theo những quy ước nhất định tuỳ theo từng ngôn ngữ lập trình và nền tảng nhất định. Trong bài viết này, chúng ta sẽ cùng tìm hiểu code convention là gì, cũng như một số quy tắc chung khi viết code cho mọi ngôn ngữ lập trình.
Code Convention là gì?
Code convention (tạm dịch là quy ước viết code) có thể được hiểu đơn giản là tập hợp những nguyên tắc chung khi lập trình như đặt tên biến, hàm, file, class, comment,… nhằm giúp cho code dễ đọc, dễ hiểu hơn vì vậy dễ bảo trì và sửa lỗi hơn.
Tiêu chuẩn viết code (coding standard) thường được công nhận và sử dụng bởi một nhóm các developer để chia sẻ code một cách thống nhất. Một ví dụ phổ biến của coding standard là tập hợp các quy ước được áp dụng trong các tài liệu của một ngôn ngữ lập trình. Lấy ví dụ tiêu biểu như ngôn ngữ C có tiêu chuẩn K&R, tiêu chuẩn của Microsoft về C# hay tiêu chuẩn cho Java của Oracle,…
Thông thường, một code convention sẽ mô tả các thông tin sau:
- Cách đặt tên biến (
camel case: variableName
,snake case: variable_name
,…). - Kiểu thụt lề, độ rộng thụt lề, sử dụng tab hay space,…
- Phương pháp đặt dấu ngoặc.
- Cách dùng khoảng trắng trong các biểu thức logic và số học.
- Cách viết comment cho code và tài liệu.
- Quy ước đặt tên class, tên file.
- Cách viết câu lệnh.
- Cách khai báo class và giao diện.
- Phương pháp tổ chức file.
Tại sao nên sử dụng Code Convention?
Vậy lý do các nhóm developer cần sử dụng coding convention là gì? Có từ 40 đến 80% chi phí của một dự án phần mềm là dành cho việc bảo trì, và việc tuân theo những tiêu chuẩn nhất định giúp code dễ đọc hơn, từ đó quá trình bảo trì và quản lý code cũng được thực hiện nhanh chóng và dễ dàng hơn.
Dưới đây là những lý do chính khiến mọi developer nên tuân thủ các quy định của code convention:
- Những thành viên trong nhóm và các developer sau này của dự án dễ đọc hiểu code hơn.
- Dễ quản lý hơn, các developer luôn biết được vị trí của những class hay file khi phải làm việc với các dự án có quy mô lớn.
- Có thể tái sử dụng code cho nhiều phần mềm khác nhau.
Bên cạnh đó, việc thống nhất code sẽ giảm thiểu tối đa các lỗi liên quan đến logic hay bảo mật, đôi khi còn có thể giúp đảm bảo hiệu năng của phần mềm và website.
Sau khi đã biết được tầm quan trọng của việc tuân theo các quy tắc khi viết code, phần cuối cùng của bài viết sẽ giúp người đọc biết được những quy tắc chung trong code convention là gì.
Tổng hợp những quy tắc chung khi viết Code
Quy tắc chung để viết code “sạch”
- Suy nghĩ đơn giản và viết code đơn giản nhất có thể.
- Luôn dọn code sạch hơn lúc ta nhận nó lần đầu, dù là của mình hay của ai khác.
- Luôn tìm ra nguyên nhân gốc rễ của vấn đề.
Quy tắc đặt tên
Cách đặt tên những định danh (bao gồm các biến, hằng số, class,…) cũng có ảnh hưởng không nhỏ đến khả năng đọc hiểu code. Hãy tưởng tượng một phần mềm khổng lồ như Windows nhưng mỗi hàm số chỉ được đặt tên như a, b, c, function1, function2
,… thì chắc chắn việc quản lý và bảo trì code là vô cùng khó khăn.
Có ba quy tắc đặt tên phổ biến là camelCase, PascalCase và snake_case. Cụ thể:
- Camel case: Từ đầu tiên trọng cụm từ được viết thường, những ký tự còn lại thì viết hoa, áp dụng cho tên hàm, tên biến và tên phương thức. Ví dụ:
firstName, lastName, getName(), findMember()
,… - Pascal case: Viết hoa ký tự đầu tiên của tất cả từ có trong cụm, thường áp dụng cho tên class hay tên biến. Ví dụ:
MickeyMouse, FirstName
,… - Snake case: Toàn bộ chữ cái đều viết thường, phân tách nhau bằng dấu “_”, thường dùng cho tên hằng số hoặc tên của chương trình. Ví dụ:
program_final, get_max()
,…
Một số quy tắc chung trong việc đặt tên:
- Đặt tên không mơ hồ, mô tả đúng chức năng của định danh.
- Không nên dùng tên viết tắt.
- Tên class và tên biến thường sử dụng danh từ.
- Tên hàm thường dùng động từ.
- Không nên sử dụng magic number (dùng số trực tiếp trong code) mà nên đặt tên riêng cho hằng số. Ví dụ:
// ❌
if (gender === 0)
else if (gender === 1)
else
// ✅
const MALE = 0;
const FEMALE = 1;
if (gender === MALE)
else if (gender === FEMALE)
else
Quy tắc về số lượng
Một số quy tắc về số lượng trong cuốn sách Clean Code A Handbook of Agile Software Craftsmanship của Robert C. Martin, quyển Refactoring in Large Software Projects: Performing Complex Restructurings Successfully của Martin Lippert cũng như bộ quy tắc của Oracle có ghi như sau:
- Một dòng Code không nên dài quá 80 ký tự.
- Một câu lệnh nên lồng tối đa 4 cấp.
- Một hàm không nên chứa quá 5 tham số.
- Một hàm không nên quá 30 dòng.
- Một class không nên vượt 500 dòng,…
- Mỗi hàm chỉ nên làm duy nhất một việc, nếu thực hiện hai mục đích khác nhau thì tên hàm cần thể hiện rõ điều này. Ví dụ:
increaseDonwnloadCounterAndSaveToDatabase
.
Quy tắc xuống hàng
Theo bộ quy tắc của Oracle:
- Nếu một hàm có nhiều cấp lồng nhau, mỗi cấp nên xuống dòng.
- Các đoạn code bằng cấp nên ở cùng một cột với nhau, dòng xuống hàng nên bắt đầu cùng cấp với dòng phía trên.
- Xuống hàng trước các toán tử (ví dụ như +, -, *, ?,…).
Ví dụ:
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));
longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; // PREFER
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6;
- Hạn chế dùng comment để giải thích code hoặc chú thích những sự thật hiển nhiên. Ví dụ:
/**
* Hàm thêm role vào database.
*/
function addRole(role)
db.roles.add(role);
- Không comment khi đóng thẻ/ngoặc:
...
...
- Xoá code không dùng, đừng comment out đoạn code đó.
- Comment cảnh báo hậu quả.
- Comment làm rõ ý nghĩa của code (nếu logic phức tạp).
Lời kết
Hy vọng bài viết trên đã giúp bạn hiểu được Code convention là gì và các quy tắc khi viết code. Nếu có thắc mắc hay đóng góp ý kiến, mời bạn để lại bình luận phía dưới bài viết này. Việt Nét xin chân thành cảm ơn bạn đã quan tâm.