Các chuẩn và quy ước lập trình - Lương Trần Hy Hiến

1.1. Pascal Case

Tên được viết theo Pascal Case (hay còn gọi là Upper Camel Case) có các tính chất sau:

- 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.

1.2. Camel Case

Tên được viết theo Camel Case (hay còn gọi là Lower Camel Case) có các tính chất sau:

- Chữcái đầu tiên được viết thường.

- Các chữcái đầu mỗi từ được viết hoa.

- Các chữcái còn lại được viết thường.

UpperCamelCase // Pascal Case

GetThisObject // Pascal Case

lowerCamelCase // Camel Case

getThatObject // Camel Case

pdf7 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 3085 | Lượt tải: 1download
Tóm tắt nội dung Các chuẩn và quy ước lập trình - Lương Trần Hy Hiến, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
1. Các cách thức đặt tên 
1.1. Pascal Case 
Tên được viết theo Pascal Case (hay còn gọi là Upper Camel Case) có các tính chất sau: 
- 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. 
1.2. Camel Case 
Tên được viết theo Camel Case (hay còn gọi là Lower Camel Case) có các tính chất sau: 
- Chữ cái đầu tiên được viết thường. 
- Các chữ cái đầu mỗi từ được viết hoa. 
- Các chữ cái còn lại được viết thường. 
UpperCamelCase // Pascal Case 
GetThisObject // Pascal Case 
lowerCamelCase // Camel Case 
getThatObject // Camel Case 
2. Các quy ước đặt tên trong chương trình 
Quy ước 0: Tên các định danh (hằng, biến, hàm, bảng, trường, …) trong ứng dụng 
phải thể hiện được ý nghĩa của nó. 
2.1. Quy ước đặt tên hằng 
Quy ước 1.1: Tên hằng được viết hoa toàn bộ, các từ cách nhau bằng ký tự ‘_’. 
const int NumberOfElements 100 // Sai. 
const int NUMBEROFELEMENTS 100 // Sai. 
const int NUMBER_OF_ELEMENTS 100 // Dung. 
2.2. Quy ước đặt tên biến 
Quy ước 2.1: Tên biến kiểu dữ liệu định sẵn được viết theo Pascal Case và được đặt theo 
phong cách Hungarian (có phần tiếp đầu ngữ - prefix, thể hiện kiểu dữ liệu của biến). 
int ituso, imauso; // Sai. 
int iTuso, iMauso; // Sai. 
int iTuSo, iMauSo; // Dung.. 
Bảng tiếp đầu ngữ ứng với các kiểu dữ liệu: 
Kiểu dữ liệu số 
char – c 
short – s 
char cKyTu; 
short sSoNguyenNgan; 
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
int – i 
long – l 
float – f 
double – d 
int iSoNguyen; 
long lSoNguyenDai; 
float fSoThuc; 
double dSoThucDai; 
int nSo; 
Kiểu dữ liệu luận lý 
bool – b bool bLuanLy; 
Kiểu dữ liệu mảng 
[] – arr int arrSoNguyen[50]; 
HocSinh arrDanhSach[50]; 
Kiểu dữ liệu chuỗi 
char *, char [] – str char *strChuoi; 
char strChuoi[50]; 
Kiểu dữ liệu con trỏ 
* - p int *pConTro; 
HocSinh *pDanhSach; 
Quy ước 2.2: Tên biến kiểu dữ liệu tự định nghĩa (struct, class) được viết theo Camel 
Case và không có tiếp đầu ngữ. 
HocSinh hsHocSinh; // Sai 
HocSinh hocSinh; // Dung 
Quy ước 2.3: Tên thuộc tính của lớp tuân thủ các quy ước 2.1, 2.2 và có thêm tiếp đầu 
ngữ “m_”; 
class HocSinh 
{ 
 private string strHoTen; // Sai 
 private string m_strHoTen; // Dung 
 private LopHoc lopHoc; // Sai 
 private LopHoc m_lopHoc; // Dung 
}; 
2.3. Quy ước đặt tên hàm 
Quy ước 3.1: Tên hàm được viết theo Camel Case và phải là động từ thể hiện hành động 
cần thực hiện. 
int checkforbadvalue(long lValue) // Sai. 
int CheckForBadValue(long lValue) // Sai. 
int checkForBadValue(long lValue) // Dung. 
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
int badValue(long lValue) // Sai. 
int checkForBadValue(long lValue) // Dung. 
2.4. Quy ước đặt tên kiểu dữ liệu tự định nghĩa 
Quy ước 4.1: Tên kiểu dữ liệu tự định nghĩa được viết theo Pascal Case và phải là danh 
từ. 
class phanso // Sai. 
class PHANSO // Sai. 
class Phanso // Sai. 
class PhanSo // Dung. 
class TinhDiemHocSinh // Sai. 
class HocSinh // Dung. 
2.5. Quy ước viết câu lệnh 
Quy ước 5.1: Mỗi câu lệnh được viết riêng trên một dòng. 
// Sai. 
x = 3; y = 5; 
// Dung. 
x = 3; 
y = 5; 
// Sai. 
if (a > b) cout << "a lon hon b"; 
else cout << "a nho hon b"; 
// Dung. 
if (a > b) 
cout << "a lon hon b"; 
else 
out << "a nho hon b"; 
// Sai. 
for (int i = 0; i < n; i++) x = x + 5; 
// Dung. 
for (int i = 0; i < n; i++) 
x = x + 5; 
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
Quy ước 5.2: Các dấu ‘{‘, ‘}’ được viết riêng trên một dòng. 
// Sai. 
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; 
} 
// Dung. 
void Swap(int &a, int &b) 
{ 
int c = a; 
a = b; 
b = c; 
} 
Quy ước 5.3: Các câu lệnh if, while, for được viết riêng trên một đoạn. 
// Sai. 
if (a > b) 
cout << "a lon hon b"; 
for (int i = 0; i < n; i++) 
x = x + 5; 
k = k * x; 
// Dung. 
if (a > b) 
cout << "a lon hon b"; 
for (int i = 0; i < n; i++) 
x = x + 5; 
k = k * x; 
Quy ước 5.4: 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. 
// Sai. 
int c = a; 
a = b; 
b = c; 
k = k * a; 
x = b + c; 
// Dung. 
int c = a; 
a = b; 
b = c; 
k = k * a; 
x = b + c; 
2.6. Quy ước về cách khoảng 
Quy ước 6.1: Các câu lệnh nằm giữa dấu ‘{‘, ‘}’ được viết cách vào một khoảng tab. 
// Sai. 
void Swap(int &a, int &b) 
{ 
int c = a; 
a = b; 
b = c; 
} 
// Dung. 
void Swap(int &a, int &b) 
{ 
int c = a; 
a = b; 
b = c; 
} 
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
Quy ước 6.2: Các câu lệnh ngay sau if, else, while, for được viết cách vào một khoảng 
tab. 
// Sai. 
if (a > b) 
cout << "a lon hon b"; 
else 
cout << "a nho hon b"; 
for (int i = 0; i < n; i++) 
x = x + 5; 
// Dung. 
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 ước 6.3: Xung quanh các toán tử 2 ngôi viết cách một khoảng trắng. 
x=x+5*a-c; // Sai. 
x = x + 5 * a - c; // Dung. 
if (a>=b) // Sai. 
if (a >= b) // Dung. 
Quy ước 6.4: Sau các dấu ‘,’, ‘;’ viết cách một khoảng trắng. 
void CalculateValues(int a,int b,int c); // Sai. 
void CalculateValues(int a, int b, int c); // Dung. 
for (int i = 0;i < n;i++) // Sai. 
for (int i = 0; i < n; i++) // Dung. 
2.7. Quy ước viết chú thích 
Quy ước 7.1: 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. 
Quy ước 7.2: Đầu mỗi struct, class, hàm phải có chú thích diễn giải ý nghĩa của nó. 
// Vi du chu thich so sai. 
// Merge sort, gan : n * log(2)n, can mang phu b 
void msort(int a[], int n, int l, int r, int b[]) 
{ 
 int m, i, j, k; 
 m = (l + r) / 2; 
 if (l < m) 
 msort(a, n, l, m, b); 
 if (m + 1 < r) 
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
 msort(a, n, m + 1, r, b); 
 for (i = l; i <= m; i++) 
 b[i] = a[i]; 
 for (i = m + 1; i <= r; i++) 
 b[i] = a[m + 1 + r - i]; 
 for (i = l, j = l, k = r; i <= r; i++) 
 if (b[j] < b[k]) 
 a[i] = b[j++]; 
 else 
 a[i] = b[k--]; 
} 
// Vi du chu thich ro rang, day du. 
// Merge sort, gan : n * log(2)n, can mang phu b 
void msort(int a[], int n, int l, int r, int b[]) 
{ 
 int m, i, j, k; 
 // Lay vi tri giua cua a 
 m = (l + r) / 2; 
 // Thuc hien merge sort tren a tu vi tri l den m 
 if (l < m) 
 msort(a, n, l, m, b); 
 // Thuc hien merge sort tren a tu vi tri m + 1 den r neu m < r 
 if (m + 1 < r) 
 msort(a, n, m + 1, r, b); 
 // Do cac phan tu cua a tu vi tri l den m co thu tu vao b 
 for (i = l; i <= m; i++) 
 b[i] = a[i]; 
 // Do cac phan tu cua a tu vi tri m + 1 den r co thu tu vao b theo thu tu 
 // nguoc 
 for (i = m + 1; i <= r; i++) 
 b[i] = a[m + 1 + r - i]; 
 // Tron b tu vi tri l den m co thu tu va b tu vi tri r den m + 1 co thu tu vao a 
 for (i = l, j = l, k = r; i <= r; i++) 
 if (b[j] < b[k]) 
 a[i] = b[j++]; 
 else 
Luơng Trần Hy Hiến Các chuẩn và quy ước lập trình 
 a[i] = b[k--]; 
} 
Quy ước 7.3: Dùng dấu chú thích từng dòng thay vì dấu chú thích đầu và cuối đoạn. 
// Sai. 
/* void Swap(int &a, int &b) 
{ 
int c = a; 
a = b; 
b = c; 
} */ 
// Dung. 
//void Swap(int &a, int &b) 
//{ 
// int c = a; 
// a = b; 
// b = c; 
//} 

File đính kèm:

  • pdfCác chuẩn và quy ước lập trình - Lương Trần Hy Hiến.pdf