Thứ Hai, 2 tháng 7, 2012

Quy ước khi viết Mã nguồn C/C++



QUY ƯỚC KHI VIẾT MÃ NGUỒN C/C++ 

      Giới thiệu
Khi viết mã nguồn, việc sửa lỗi, hay dùng lại mã nguỗn là điều rất cần thiết. Để sử dụng mã nguồn một cách hiệu quả và làm cho người đọc dễ hiểu thì việc trình bày mã nguồn là điều rất quan trọng. Nếu không có một quy tắc nào trong viết mã nguồn, thì chính người viết ra nó cũng khó hiểu được mã nguồn đó sau một thời gian dài. Do đó chúng ta cần có các Quy tắc, hay còn gọi là Phong cách viết mã nguồn. Bài viết này liệt kê một số Quy tắc cơ bản cần thiết.



1.      Các quy tắc đặt tên trong chương trình

Quy tắc 1: Tên các định danh (hằng, biến, hàm, mảng, cấu trúc, lớp, …) trong chương trình phải thể hiện được ý nghĩa của nó. 

Quy tắc 2: Tên hằng được viết hoa toàn bộ, các từ cách nhau bằng ký tự ‘_’. 
Ví dụ:
const int  NUMBER_OF_ELEMENTS 100 

Quy Tắc 3: Tên biến phải thể hiện được ý nghĩa của nó, viết bằng chữ thường, các từ cách nhau bằng ký tự ‘_’. 
Ví dụ:
int   tu_so, mau_so;    
 
Quy Tắc 4: Tên hàm phải là động từ thể hiện hành động cần thực hiện.  
Ví dụ:
int check_bad_value (long value) 
int kiem_tra_so_nguyen_to (int n)

2.      Quy tắc viết câu lệnh 

Quy Tắc 5: Mỗi câu lệnh được viết riêng trên một dòng.

Ví dụ sai
Ví dụ đúng
x = 3; y = 5;
x = 3;
y = 5;
if (a > b) cout << "a lon hon b";
else cout << "a nho hon b";
if (a > b)
         cout << "a lon hon b";
else
         cout << "a nho hon b";

for (int i = 0; i < n; i++) x = x + 5;
for (int i = 0; i < n; i++)
         x = x + 5;

Quy Tắc 6: Các dấu ‘{‘, ‘}’ được viết riêng trên một cột. 

Ví dụ sai
Ví dụ đúng
void Swap(int &a, int &b) { 
int c = a; 
a = b; 
b = c; 

void Swap(int &a, int &b) 
         int c = a; 
         a = b; 
         b = c; 

Quy Tắc 7: Các câu lệnh if, switch, while, for, do được viết riêng trên một đoạn. 

Ví dụ sai
Ví dụ đúng
if (a > b) 
cout << "a lon hon b"; 
for (int i = 0; i < n; i++) 
x = x + 5; 
k = k * x; 
if (a > b) 
         cout << "a lon hon b"; 
 
for (int i = 0; i < n; i++) 
         x = x + 5; 
 
k = k * x;   

Quy Tắc 8: Các câu lệnh cùng thực hiện một công việc được viết riêng trên một đoạn.

Ví dụ sai
Ví dụ đúng
int c = a; 
a = b; 
b = c; 
k = k * a; 
x = b + c; 

int c = a; 
a = b; 
b = c; 
 
k = k * a; 
x = b + c;

3.      Quy Tắc về khỏang trắng (space)

Quy Tắc 9: Các câu lệnh nằm giữa dấu ‘{‘, ‘}’ được viết cách vào một khoảng tab. Cũng như các câu lệnh con của if, else, while, for, switch, cũng được viết cách vào một khoảng tab.

Ví dụ sai
Ví dụ đúng
if (a > b) 
cout << "a lon hon b"; 
else 
cout << "a nho hon b"; 
 
for (int i = 0; i < n; i++) 
x = x + 5; 
if (a > b) 
         cout << "a lon hon b"; 
else 
         cout << "a nho hon b"; 
 
for (int i = 0; i < n; i++) 
         x = x + 5; 

Quy Tắc 10: Xung quanh các toán tử 2 ngôi (+, -, *>=,…) viết cách một khoảng trắng.
 
Ví dụ sai
Ví dụ đúng
x=x+5*a-c; 
x = x+5 * a - c;
if (a>=b) 
if (a >= b)

4.      Quy Tắc viết chú thích 

Quy Tắc 11: Chú thích phải rõ ràng, dễ hiểu và diễn giải được ý nghĩa của đoạn lệnh. Đầu mỗi hàm, struct, class, phải có chú thích diễn giải ý nghĩa của nó. 

Quy Tắc 12: Sử dụng //  cho chú thích 1 dòng; sử dụng  /* */ cho các chú thích từ 2 dòng trở lên. Dùng /* */ để tạm thời comment out các đoạn chương trình để testdebug
Mỗi file nguồn, cả .CPP.H, đều phải bắt đầu bằng một khối chú thích đủ để người đọc có thể hiểu mục đích của file. 
Mẫu như sau: 

/***************************************************************
* Tên/Name:    Họ tên
* Project: mô tả/tên dự án (một dòng, giống nhau tại mọi file)
* Purpose: Mục đích sử dụng của mã chương trình hoặc các khai báo trong 
* file này (một vài dòng)
**************************************************************/

Mỗi lớp, hàm, phương thức phải có một khối chú thích mô tả ngắn gọn lớp, hàm, phương thức đó làm gì; đối với hàm/phương thức: liệt kê tất cả các tham số, nêu rõ ý nghĩa của tham số; và mô tả điều kiện trước và sau của hàm/phương thức đó. 
Có thể chú thích các đoạn code bên trong hàm, tuy nhiên chỉ nên chú thích đủ hiểu. Quá nhiều chú thích và chú thích thừa làm code trông rối. Tất cả các chú thích phải được lùi đầu dòng cùng đoạn code quanh nó. 

5.      Quy Tắc Thiết kế

Quy Tắc 13: Mỗi phương thức/hàm (kể cả hàm main()) không nên viết quá dài (vượt quá 30 dòng) tính từ dấu mở hàm ‘{‘ tới ngoặc kết thúc hàm ‘}’. 


Quy Tắc 14: Hạn chế việc dùng biến toàn cục.

0 nhận xét:

Đăng nhận xét