Viết Code là một hoạt động không thể tránh khỏi khi bạn trở thành một lập trình viên. Tuy nhiên, để viết “Code sạch, Code đẹp” là một quá tình chuyên sâu ”. Vì thế, Coding Convention là một điều cần thiết để giúp Code của bạn tốt hơn.
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.
Coding Convention là gì?
Quy tắc coding (Coding Convention) là một bộ quy tắc quy định cách viết code của một chương trình mà lập trình viên phải tuân theo phát triển chương trình đó. Đối với mỗi dự án sẽ có thể có những bộ quy tắc khác nhau, quy tắc đó có thể bao gồm những phần sau:
- Đặt tên biến, lớp, interface, phương thức, …
- Khai báo và sử dụng biến
- Khoảng trắng, tab
- Comment code
- Độ dài mỗi dòng code, mỗi file, …
- …..
Tầm quan trọng của tiêu chuẩn mã hóa
Quy tắc mã hóa là một thành phần rất quan trọng trong phát triển phần mềm, vì đây là một phần dễ bảo trì, sửa lỗi giúp cải thiện chất lượng sản phẩm, để những người khác hiểu được mã nguồn của mình. và thống nhất mã giữa các thành viên trong nhóm.
Nếu có người nhờ bạn sửa lỗi chương trình giúp họ, bạn sẽ cảm thấy như thế nào nếu nhận được đoạn mã bảo trì này:
Và sự khác biệt hoàn toàn so với đoạn mã trên:
Chuẩn hình thức và chuẩn ngôn ngữ
- Chuẩn hình thức
Chuẩn hình thức là những quy định liên quan đến sự định dạng của mã nguồn như:
- Đặt tên lớp, thuộc tính, phương thức
- Thụt đầu dòng
- Sử dụng khoảng trắng
- Đóng mở ngoặc
- Chuẩn chữ nghĩa
Chuẩn chữ nghĩa là những quy định liên quan đến sự thực thi của mã nguồn như:
- Biểu thức so sánh
- Cấu trúc điều khiển: if, for, while
- Khai báo và sử dụng biến
- Cài đặt phương thức
White Space
Những quy định về sử dụng khoảng trắng (space), thụt đầu dòng, xuống dòng, dòng trống: giúp cho nội dung văn bản được tổ chức một cách có hệ thống để người đọc dễ dàng tiếp thu.
- White Space – thụt đầu dòng
White Space được dùng để xác định một chuẩn thụt đầu dòng cho toàn bộ mã nguồn của chương trình.
1 đơn vị thụt đầu dòng = 1 tab hoặc 1 đơn vị thụt đầu dòng = 5 khoảng trắng
Các bạn nên dùng tab thay cho khoảng trắng để đỡ tốn công nhập quá nhiều lần khoảng trắng. Các bạn cũng có thể tùy chỉnh một đơn vị tab ứng với bao nhiêu khoảng trắng tùy ý, hai dòng code cách nhau một bậc thì sẽ cách nhau một đơn vị thụt đầu dòng.
- White Space – Dòng trống
Những dòng code có quan hệ với nhau (cùng thực hiện một công việc) có thể được gom lại thành một block. Hai block code sẽ cách nhau ít nhất một dòng trống.
Khi đặt khoảng trắng, các dòng code thể được đặt sau dấu phẩy và dấu chấm phẩy, xung quanh các toán tử.
Dấu ngoặc
- Dấu ngoặc tròn ()
Trong viết code, dấu ngoặc tròn được dùng để giúp người đọc hiểu rõ mục đích của người viết và để chắc chắn trình biên dịch sẽ thực hiện đúng theo ý của người viết.
Khi đang phân vân có nên dùng dấu ngoặc tròn hay không, hãy dùng nó ngay, đừng chần chừ!
- Dấu ngoặc nhọn {}
Theo tiêu chuẩn Java: dấu ngoặc nhọn “{” phải được đặt cùng dòng với các câu if, for, while,… mục đích mở ra một khối lệnh. Ngược lại, dấu “}” sẽ đóng khối lệnh.
Comment
Trong viết code, các comment không nên viết cầu kì, hãy đơn giản hóa chúng. Các bạn code đến đâu thì comment đến đấy.
Lưu ý:
- Không nên comment lung tung, chỉ viết comment khi bạn cảm nhận là đoạn code của mình quá phức tạp.
- Không viết các comment chỉ lặp code, comment thừa.
- Khi dùng nhiều endline comment trên các dòng code liên tiếp nhau, bạn phải canh lề các comment này như nhau.
Quy ước đặt tên
- Quy tắc viết hoa
Pascal case
Các chữ cái đầu mỗi từ được viết hoa. Các chữ còn lại được viết thường.
Ví dụ: SinhVien, GiangVien
Camel case
Camel case giống với Pascal case nhưng chữ cái đầu của từ đầu tiên viết thường.
Ví dụ: chieuCao, canNang
Đặt tên class, interface, abstract class
Sử dụng danh từ hay cụm danh từ: SinhVien, FormSinhVien, …
Dùng Pascal case: SinhVien, FormSinhVien, …
Hạn chế viết tắt gây khó hiểu:
Sai: FormSV
Đúng: FormSinhVien
Không dùng tiền tố khi đặt tên lớp:
Sai: ISinhVien
Đúng: SinhVien
- Phương thức
Để đặt tên phương thức, các bạn hãy sử dụng Camel case. Ví dụ: xepLoai.
Tên phương thức sẽ thể hiện được chức năng của phương thức đó. Ví dụ: tinhDiemTrungBinh.
Hãy tránh đặt tên gây cảm giác mơ hồ, không rõ nghĩa! Ví dụ: hienThi, tinh.
Các bạn không nên phân biệt tên các phương thức bằng số. Ví dụ: tinhDiem1, tinhDiem2.
- Biến
- Biến
Để đặt tên biến, các bạn sử dụng Camel case. Ví dụ: int diemTrungBinh, String hoTen
Khi đặt tên, đừng dùng tiền tố! Ví dụ:
Đúng: String address
Sai: String strAddress
Hãy đặt tên biến dễ gợi nhớ, tránh viết tắt gây khó hiểu. Ví dụ:
Đúng: String address
Sai: String addr
Các bạn không nên đặt tên biến chỉ bằng 1 chữ cái như x, y, z,,… trừ trường hợp các biến đếm i, j.
Đồng thời, đừng đặt tên biến quá dài hay quá ngắn, vì việc này có thể làm rối chương trình hoặc cũng dẫn đến ý nghĩa biến mơ hồ (quá ngắn).
- Biến static, enum
Tất cả các từ được viết hoa và phân cách bằng dấu gạch dưới (_).
Ví dụ:
static float PI = 3.14f
static int MIN_WIDTH = 4
1
2 3 |
enum ShapeType{
SQUARE, CIRCLE, RECTANGLE } |
- Biến final
Đối với biến final toàn cục: Hãy đặt tên biết giống như biến static. Tất cả các từ được viết hoa và phân cách bằng dấu gạch dưới (_).
Đối với biến fianl cục bộ: đặt tên biến giống như biến thông thường.
1
2 3 4 5 6 7 8 9 |
public class HinhTron {
// Biến toàn cục final float PI = 3.14f;
public float tinhChuVi(int banKinh) { int duongKinh = banKinh * 2; // Biến cục bộ return duongKinh * PI; } } |
Đặt tên Package
Khi đặt tên package, tất cả chữ đều là chữ thường.
Ví dụ:
Đúng: com.example.deepspace
Sai: com.example.deepSpace hoặc com.example.deep_space
Sử dụng biến (variables)
Sử dụng biến được áp dụng để tránh tình trạng khai báo biến mà không sử dụng: nhiều trình biên dịch warning khi complie (Eclipse IDE). Các lệnh if, while, for không nên lồng nhau hơn 3 bậc.
Import thư viện sử dụng
Các bạn chỉ nên import thư viện sử dụng khi cần thiết chứ không nên sử dụng import tất cả.
Ví dụ: Hãy sử dụng import java.util.List; thay vì import java.util.*;
Nguồn tham khảo:
Bộ môn Ứng dụng phần mềm
Cao đẳng FPT Mạng cá cược bóng đá
Hà Nội