Dọn dẹp mã nguồn: Những quy tắc đơn giản để tránh "mớ bòng bong"
Mọi lập trình viên đều từng đối mặt với nó: mã nguồn bẩn - loại mã trông như được viết vội vàng, rải rác những con số ma thuật, khối mã trùng lặp và tên biến khó hiểu. Nó hoạt động... miễn cưỡng. Nhưng việc bảo trì nó lại là một cơn ác mộng.
Mã nguồn bẩn hay Dirty Code là gì?
Mã nguồn bẩn là mã vô cùng khó đọc hoặc khó hiểu, thiếu cấu trúc và tính nhất quán, bạn sẽ rất khó để sửa đổi hoặc gỡ lỗi mà không làm hỏng thứ gì đó khác bên trong. Điều này thường xảy ra khi các lập trình viên làm việc dưới áp lực thời hạn gấp rút, bỏ qua việc xem xét mã và không tuân theo các phương pháp hay tiêu chuẩn tốt nhất.
Tại sao Mã nguồn bẩn lại là vấn đề nghiêm trọng trong lập trình?
Mã nguồn bẩn vô cùng khó gỡ lỗi, việc sửa một lỗi có thể gây ra nhiều lỗi khác. Nó cũng vô cùng tốn kém để bảo trì, bởi việc viết mã kém mất nhiều thời gian hơn để tìm ra lỗi và cải thiện lại nó. Hơn nữa, nó gây ra sự nhầm lẫn trong nội bộ nhóm các lập trình viên, khi mà người nọ có thể đổ lỗi cho người kia, thậm chí những nhân viên mới còn phải dành thêm nhiều giờ chỉ để cố gắng hiểu điều gì đang xảy ra.
Mã nguồn bẩn có thể giúp bạn hoàn thành công việc trong hôm nay, nhưng nó là một quả bom hẹn giờ cho đội nhóm của bạn và chính bạn trong tương lai. Hãy luôn ghi nhớ điều đó nhé.
Những quy tắc đơn giản để tránh mã nguồn bẩn
1. Tuân thủ Nguyên tắc đơn trách nhiệm (SRP)
Mỗi hàm, phương thức hoặc lớp chỉ nên làm một việc. Nếu bạn thấy mình đang viết các phương thức với quá nhiều trách nhiệm, hãy chia chúng thành các đơn vị nhỏ hơn.
Sau đây là một ví dụ xấu nên tránh:
def process_user_data(user):
user['age'] = user['age'] + 1
db.save(user)
print(f"User {user['name']} updated")
Còn đây là ví dụ tốt hơn nên áp dụng:
def update_user_age(user):
user['age'] += 1
def save_user_to_db(user):
db.save(user)
def log_user_update(user):
print(f"User {user['name']} updated")
Mỗi hàm giờ đây có một công việc rõ ràng, giúp việc kiểm tra và sửa đổi mã dễ dàng hơn.
2. Tránh các số và chuỗi ma thuật
Các giá trị được mã hóa cứng (“số ma thuật”) làm cho mã không thể đọc được và khó bảo trì. Hãy sử dụng hằng số để thay thế chúng.
Sau đây là ví dụ mà bạn nên tránh:
if (statusCode === 404) {
console.log("Not Found");
}
Còn đây là điều mà bạn nên làm:
const NOT_FOUND = 404;
if (statusCode === NOT_FOUND) {
console.log("Not Found");
}
Hằng số NOT_FOUND rất dễ hiểu, giúp mã của bạn dễ đọc hơn.
3. Viết ttên biến và hàm mô tả
Tên biến của bạn nên phản ánh những gì chúng đại diện. Tránh các từ viết tắt và tên khó hiểu.
Đây là ví dụ không nên làm:
int a = 5;
String s = "John";
Bạn nên sửa chúng lại như sau:
int userAge = 5;
String userName = "John";
Điều tương tự cũng áp dụng cho các hàm. Tránh những cái tên mơ hồ như doStuff() hoặc process(). Hãy cụ thể chúng hơn nhé.
4. Don't repeat yourself (DRY)
Nếu bạn đang sao chép và dán mã, bạn đang làm sai. Mã trùng lặp khiến việc sửa lỗi trở thành cơn ác mộng. Hãy tóm tắt logic lặp lại thành các hàm hoặc lớp.
Sau đây là ví dụ xấu mà bạn nên tránh:
print("Welcome, John")
print("Welcome, Mary")
Bạn nên sửa lại thế này:
def greet_user(name):
print(f"Welcome, {name}")
greet_user("John")
greet_user("Mary")
5. Giữ cho hàm của bạn ngắn gọn
Nếu hàm của bạn dài hơn 20-30 dòng, nó đang làm quá nhiều việc. Hãy chia nhỏ nó thành các hàm nhỏ hơn, có thể tái sử dụng. Các hàm dài khiến việc hiểu và kiểm tra hành vi cụ thể trở nên khó khăn hơn.
6. Sử dụng chú thích một cách tiết kiệm
Hãy viết mã tự giải thích. Chỉ sử dụng chú thích khi cần thiết để làm rõ logic phức tạp. Tránh các chú thích nêu rõ điều hiển nhiên.
Ví dụ xấu mà bạn nên tránh:
// Increment the counter by 1
counter = counter + 1;
Nếu mã của bạn rõ ràng thì không cần phải chú thích nữa:
counter += 1;
Sử dụng chú thích cho những việc như làm rõ lý do tại sao một quyết định nhất định được đưa ra, chứ không phải mã đang làm gì.
7. Định dạng và sắp xếp mã của bạn
Tuân theo một hướng dẫn kiểu mã nhất quán (ví dụ: PEP8 cho Python, ESLint cho JavaScript). Sử dụng thụt lề thích hợp và nhóm các mã liên quan lại với nhau. Định dạng tốt giúp mã sạch sẽ và dễ đọc mà không cần thêm nỗ lực nào.
Mã không chỉ được viết cho máy móc; nó cũng được viết cho con người hay đồng nghiệp của bạn, người bảo trì trong tương lai hoặc thậm chí chính bạn sáu tháng sau đó. Khi bạn viết mã sạch, bạn giảm tải tâm lý cho người khác, giúp dễ dàng gỡ lỗi, mở rộng và cải thiện. Bạn trông giống như một nhà phát triển chuyên nghiệp, người coi trọng chất lượng.
Cảm ơn các bạn đã theo dõi!
All rights reserved