April 2, 2021

Tổng quan về Coding Convention

Coding conventions là gì ?

Coding conventions (CC) là một tập hợp các nguyên tắc chung khi lập trình nhằm giúp cho code dễ đọc, dễ hiểu, từ đó dễ quản lý và bảo trì hơn. CC có những cái chung và những cái riêng tuỳ ngôn ngữ, tuỳ cộng đồng, nhưng hầu hết được công nhận và đi theo bởi đa số các lập trình viên trên thế giới. CC thường được xây dựng sau quá trình phân tích yêu cầu người sử dụng hoàn tất, dựa vào các nhóm chức năng của một hệ thống mà PM sẽ dựng một bộ khung CC cho toàn project cũng như team leader có thể dựng lên từng bộ CC cho team mình dựa trên bộ khung gốc.

Mục đích

Khi làm việc nhóm, các thành viên phải đề cao tính cộng tác (collaboration), với các dự án nhỏ, chỉ một vài thành viên, việc cộng tác đã khó, với những dự án lớn, việc trao đổi, cộng tác giữa các thành viên chung một team, giữa các thành viên khác team cần có 1 quy tắc chung.

Quy tắc đặt tên (naming convention)

Các cú pháp thông dụng:

  1. Cú pháp lạc đà (camelCase): Ký tự đầu tiên của từ đầu tiên viết thường, những ký tự đầu tiên của những từ tiếp theo được viết hoa. VD: productList,productPrice
  2. Cú pháp Pascal (PascalCase): Cú pháp Pascal viết hoa chữ cái đầu tiên của mỗi từ. VD: ProductName,GetAllData
  3. Cú pháp con rắn (snake_case): Với cú pháp con rắn, tất cả các chữ cái đều viết thường, và các từ cách nhau bởi dấu gạch dưới. VD: user_name,user_dob

Việc sử dụng cú pháp nào là tuỳ vào mỗi ngôn ngữ, mỗi cộng đồng định nghĩa nhưng đều dùng ba cú pháp này, kèm theo các nguyên tắc:

  • Tên class thì đặt theo PascalCase
  • Tên biến, tên hàm đặt theo camelCase hoặc snake_case
  • Hằng số đặt theo UPPER_CASE
  • Tên biến, tên class thường là danh từ, cụm danh từ hoặc tính từ
  • Tên hàm thường bắt đầu bằng động từ
  • Tên thì phải có nghĩa, không được đặt tên kiểu viết tắt
  • Tránh đặt những tên quá chung chung, tối nghĩa

Quy tắc về số lượng

Bob Martin phát biểu trong cuốn Clean Code: “if small is good, then smaller must be better”.

Số lượng dòng code trong function/class, số lượng function trong class, số lượng class trong package phải giữ ở một giới hạn nhất định nào đó, và nên giữ càng ít càng tốt, ví dụ:

  • Các function không nên quá 30 dòng (Martin Lippert-rule 30)
  • Class không nên quá 500 dòng (Clean Code)
  • Một function không được vượt quá 5 tham số (nên giữ <=3) (Clean Code)
  • Một function chỉ làm duy nhất 1 việc, trong trường hợp chính đáng, làm 2 việc cũng được phép, tuy nhiên tên function phải nói rõ điều này
  • Khi khai báo biến, một dòng chỉ chứa một biến
  • Một dòng không nên dài quá 80 ký tự (Oracle)
  • Các câu lệnh lồng nhau tối đa 4 cấp

Quy tắc xuống hàng

Theo Oracle:

  • Nếu có dấu phẩy thì xuống hàng sau dấu phẩy ","
  • Xuống hàng trước toán tử "+","-"…
  • Nếu có nhiều cấp lồng nhau, thì xuống hàng theo từng cấp
  • Dòng xuống hàng mới thì nên bắt đầu ở cùng cột với đoạn lệnh cùng cấp ở trên

Quy tắc Comment

  • Hạn chế dùng comment để giải thích code, thay vào đó hãy cải thiện đoạn code
  • Chỉ nên dùng comment trong trường hợp viết documentation cho thư viện, thông tin đính kèm cho class