Quy tắc chung khi viết chương trình
Bộ quy tắc sau đây đảm bảo lập trình viên có thể viết chương trình dễ đọc, dễ sửa lỗi và dễ phát triển hơn cho bạn và người khác. Lưu ý bộ quy tắc hướng tới ngôn ngữ C++
, và có thể khác đối với các ngôn ngữ lập trình khác.
Đặt tên và khai báo
Biến, hàm thường có 3 phong cách đặt tên chính. Khi lập trình, bạn nên theo một cách đặt tên cố định để đảm bảo tính đồng nhất:
- Snake case: Sử dụng dấu gạch chân
_
để phân cách các từ.
Ví dụ
hoc_sinh, tong_uoc_chan
, \(\ldots\)
- Camel case: Từ đầu tiên viết thường, các từ sau viết liền và viết hoa chữ cái đầu.
Ví dụ
hocSinh, tongUocChan
, \(\ldots\)
- Pascal case: Các từ viết liền và viết hoa chữ cái đầu mỗi từ.
Ví dụ
HocSinh, TongUocChan
, \(\ldots\)
Tên hàm và tên biến nên rõ ràng, có ý nghĩa. Một số trường hợp ngoại lệ:
- Tên biến, mảng, hàm do đầu bài yêu cầu như biến
n
, mảnga
. - Tên biến lặp thường sử dụng chữ cái
i
,j
,k
,\ldots
Ví dụ
Ví dụ nên
int tong_uoc_chan(int n) {
int tong = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0 && i % 2 == 0) {
tong += i;
}
}
return tong;
}
Ví dụ không nên
int x(int a) {
int b = 0;
for (int i = 1; i <= a; i++) {
if (a % i == 0 && i % 2 == 0) {
b += i;
}
}
return b;
}
Nên sử dụng const
cho những biến có giá trị không đổi trong suốt chương trình như kích thước mảng, hằng số toán học, \ldots Tên biến hằng nên viết hoa.
Ví dụ
const int MAX_N = 1001;
const double PI = 3.1415;
Định dạng
Các câu lệnh trong khối lệnh cần viết thụt vào bằng dấu TAB hoặc 2/4 dấu cách.
Ví dụ
Ví dụ nên
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
if (n > 0) {
cout << "n la so nguyen duong.";
}
return 0;
}
Ví dụ không nên
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
if (n > 0) {
cout << "n la so nguyen duong.";
}
return 0;
}
Mỗi dòng chỉ nên chứa tối đa một lệnh, mỗi dòng không chứa quá \(80\) kí tự. Nếu câu lệnh quá dài, câu lệnh nên được viết trên nhiều dòng.
Ví dụ
Ví dụ nên
#include <bits/stdc++.h>
using namespace std;
int main() {
string name;
cin >> name;
cout << "Chao mung ban da den voi chuong trinh C++ dau tien, "
<< name << "!\n";
return 0;
}
Ví dụ không nên
#include <bits/stdc++.h>
using namespace std;
int main() {
string name;
cin >> name;
// Câu lệnh quá dài và tràn màn hình
cout << "Chao mung ban da den voi chuong trinh C++ dau tien, " << na
return 0;
}
Nên sử dụng dấu cách:
- Xung quanh toán tử
- Sau dấu phẩy và dấu chấm phẩy
- Cho các thành phần của câu lệnh
if
,for
,while
, \(\ldots\)
Ví dụ
Ví dụ nên
int tong_le(int l, int r) {
int sum = 0;
for (int i = l; i <= r; i++) {
if (i % 2 == 0) {
sum += i;
}
}
return sum;
}
Ví dụ không nên
int tong_le(int l,int r){
int sum=0;
for(int i=left;i<=right;i++){
if(i%2==0){
sum+=i;
}
}
return sum;
}
Nên sử dụng cặp ngoặc tròn ()
để cho tăng độ rõ ràng cho câu lệnh.
Ví dụ nên
if ((a > b) && (b > c) && (c > d)) {
cout << "Day la mot day giam dan.";
}
\newpage
Chú thích (comment)
Nên sử dụng chú thích để giải thích những đoạn chương trình có thể gây phức tạp cho các người dùng khác, hoặc cho bản thân lập trình viên bảo trì và cải tiến chương trình trong tương lai. Tuy nhiên, cần tránh lạm dụng sử dụng quá nhiều chú thích cho đoạn chương trình đã quá dễ hiểu.
Ví dụ
Ví dụ nên
// Hàm trả về tổng các ước dương chẵn của số n.
int tong_uoc_chan(int n) {
int tong = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0 && i % 2 == 0) {
tong += i;
}
}
return tong;
}
Ví dụ không nên
// Hàm trả về tổng các ước dương chẵn của số n.
int tong_uoc_chan(int n) {
// Khai báo biến tổng
int tong = 0;
// Sử dụng vòng lặp từ 1 đến n để tìm ước
for (int i = 1; i <= n; i++) {
// Kiểm tra điều kiện
if (n % i == 0 && i % 2 == 0) {
// Cộng ước i vào tổng
tong += i;
}
}
// Trả về biến tổng
return tong;
}