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 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.
Những lợi ích mà Coding Convention mang lại:
- Đẩy cao năng suất làm việc nhóm nhanh hơn.
- Quy tắc hoạt động của Code Convention theo tính thống nhất và tuân thủ theo tiêu chuẩn sẽ giúp bạn dễ dàng làm việc hơn.
- Khi viết Code bằng Code Convention, sẽ khiến người khác dễ hiểu và nắm bắt được cái mà bạn truyền tải đến.
- Phần mềm Code Convention dễ dàng nâng cấp và được cải tiến.
- Code Convention có thể tái sử dụng trong nhiều phần mềm và các ứng dụng khác.
- Việc bảo trì hệ thống với Code Convention trở nên thuận lợi và dễ dàng hơn bao giờ hết.
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;
Quy tắc comment
- 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:
<!DOCTYPE html>
<html lang="en">
<!-- mở head -->
<head>
...
</head>
<!-- kết thúc head -->
<!-- mở body -->
<body>
...
</body>
<!-- kết thúc body -->
</html>
- 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).
Những câu hỏi thường gặp về Coding Convention
Không cân sử dụng Code Convention để có thiết viết code được không?
Câu trả lời là Có. Lập trình chỉ cần viết code theo đúng quy tắc thi code vân hoạt động bình thường. Tuy nhiên, trong trường hợp phần mềm cần được nâng cấp, bảo trì hoặc tìm và sửa lỗi sai thì sẽ gặp nhiều khó khăn hơn là sử dụng Code Convention.
Viết code không cần theo quy tắc được không?
Câu trả lời là Có. Lập trình viên viết code mà không theo quy tắc thụt đầu dòng, khoảng cách nào hay đặt tên thì code đó vẫn chạy bình thường. Có điều, trong thời gian sau có thể bạn sẽ không nhớ bạn đã viết gì. Điều này sẽ gây khó khăn cho bạn đấy nhé!
Nên tìm hiểu thêm quy tắc viết code ở đâu?
Nếu bạn muốn tìm hiểu thêm về quy tắc viết code, bạn có thể lên Google hoặc Bing tìm kiếm từ khóa: Code Convention hoặc Coding Convention. Kết quả trả về sẽ là các bài đọc về tiếng Anh, do đó bạn có thể dịch tự động về tiếng Việt trên trình duyệt của mình.
Coding Convention Java nghĩa là gì?
Coding Convention trong Java bao gồm:
- Quy tắc Negative Space (White Space): thụt đầu dòng và dòng trống.
- Quy tắc ngoặc nhọn hoặc ngoặc tròn.
- Quy tắc bình luận (comment).
- Quy tắc đặt tên bao gồm quy tắc viết hoa, đặt tên interface, abstract class, class, hàm, biến…
- Việc sử dụng variables.
- Sử dụng thư viện…
Nên tìm hiểu thêm quy tắc viết code JavaScript ở đâu?
Nếu bạn muốn biết cụ thể hơn về quy tắc viết code trong JavaScript, thì bài viết và bài tập vận dụng JavaScript Coding Convention của W3School là một trang phù hợp để bạn vừa học tập và rèn luyện nhé. Hoặc bạn có thể truy cấp theo địa chỉ website: https://www.w3schools.com/js/js_conventions.asp
Coding Convention C# nghĩa là gì?
Coding Convention trong ngôn ngữ lập trình C# bao gồm:
- Quy tắc viết hoa như:
Pascal case, uppercase, camelcase,...
- Phương thức tổ chức file trong một dự án:
thư mục source code C#, File source code c#,...
- Quy tắc dùng để đặt tên biến như đặt tên: class, namespace, attribute, interface, enumeration,…
Nên tìm hiểu thêm clean code ở đâu?
Clean code là một mã nguồn “sạch” bao gồm: các thức tổ chức mã nguồn, cách triển khai mã nguồn sao cho khoa học, dễ hiểu và đồng thời mang lại hiệu suất cao cho các chương trình cụ thể.
Clean Code có khả năng giúp bạn làm việc với phần mềm trơn tru, nhanh nhạy hơn. Bạn có thể tái sử dụng Code của mình để phục vụ phát triển cho nhiều dự án khác cùng nhiều lợi ích khác.
Bạn có thể tìm hiểu thêm clean code bằng cách truy cập địa chỉ website: https://spring.io/blog/2011/08/26/clean-code-in-android-applications