Skip to main content

Những quy tắc chung khi viết Code

Coding Convention

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()

    ,…

Naming Convention

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ư +, -, *, ?,…).
        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.
  • 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).