10 quy tắc vàng để viết code sạch
Code bừa bộn giống như một căn phòng lộn xộn, khiến bạn mất năng lượng và khó tìm thấy thứ mình cần. Ngược lại, code một cách gọn gàng, sạch sẽ mang đến sự rõ ràng, dễ quản lý và giúp bạn kiểm soát tốt mọi dự án đang thực hiện.
Coder gọn gàng so với Coder lộn xộn
Để tôi vẽ cho bạn một bức tranh nhé.
Dưới đây là biểu đồ cho thấy hành trình của hai loại lập trình viên:
- Bad Coder (Đường màu đỏ): Bắt đầu nhanh nhưng sập rất nhanh. Viết càng nhiều dòng, càng gây ra nhiều rắc rối.
- Clean Code (Dòng màu xanh): Bắt đầu chậm nhưng vẫn nhất quán. Sự phát triển không dừng lại — nó tăng tốc.
Bây giờ, bạn quyết định mình muốn theo dòng nào .
Chi phí của việc Code tệ
Để minh họa biểu đồ này, trong giai đoạn phát triển ban đầu, việc thay đổi code tồi hơi tốn kém hơn so với code sạch. Tuy nhiên, khi chúng ta chuyển sang giai đoạn bảo trì và tái cấu trúc, khoảng cách này MỞ RỘNG ĐÁNG KỂ, với việc code tệ tốn kém gần GẤP ĐÔI so với code sạch.
Đến giai đoạn kế thừa, code tệ đạt 100% chi phí, bây giờ việc cập nhật nó CỰC KỲ tốn kém, trong khi code sạch vẫn dễ quản lý hơn ở mức 45%.
Không còn nghi ngờ gì nữa, code tệ là một vấn đề TỐN KÉM trong phát triển phần mềm.
10 Quy tắc bất di bất dịch để viết Code sạch
1. Sử dụng tên có ý nghĩa
Việc đặt tên biến hoặc hàm là b hoặc x là một tội ác. Hãy gọi chúng bằng đúng tên của chúng.
// Weak and vague
let b = 5;
// Strong and clear
let numberOfUsers = 5;
Những người viết tên không rõ ràng không muốn chịu trách nhiệm cho lỗi của họ. Đừng trở thành người như vậy.
2. Giữ cho hàm tập trung vào một nhiệm vụ duy nhất (SRP)
Một hàm nên làm một việc—và làm nó một cách hoàn hảo. Điều này được gọi là Nguyên tắc Trách nhiệm Duy nhất (SRP).
Code tốt giống như một cây búa. Nó đóng MỘT chiếc đinh, không phải mười.
// Clean: One job, one focus
function calculateTotal(a, b) {
return a + b;
}
function logTotal(user, total) {
console.log(`User: ${user}, Total: ${total}`);
}
// Dirty: Trying to do EVERYTHING
function calculateAndLogTotal(a, b, user) {
let total = a + b;
console.log(`User: ${user}, Total: ${total}`);
}
Khi bạn trộn các nhiệm vụ, bạn trộn SỰ BỐI RỐI với thảm họa.
3. Silent Comments
Bạn không giải thích chức năng của một cánh cửa MỖI khi ai đó bước vào phòng. Code của bạn cũng nên hoạt động theo cách tương tự.
// Clean: Self-explanatory
let userAge = 25;
// Messy: Needs an explanation
let a; // This means "age of the user"
4. Làm cho Code của bạn dễ đọc
Nếu ai đó đọc code của bạn mà cảm thấy như họ đang giải một câu đố, bạn đã trở thành kẻ gây rối.
// Clean: Reads like a story
if (isLoggedIn) {
console.log("Welcome!");
} else {
console.log("Please log in.");
}
// Messy: Feels like chaos
if(isLoggedIn){console.log("Welcome!");}else{console.log("Please log in.");}
5. Kiểm tra mọi thứ bạn viết
Nếu bạn quá lười để viết test, ĐỪNG phàn nàn khi code của bạn bị lỗi.
class Calculator {
add(a, b) { return a + b; }
subtract(a, b) { return a - b; }
}
// Test it (Unit Test)
const calculator = new Calculator();
console.assert(calculator.add(2, 3) === 5, "Addition failed");
console.assert(calculator.subtract(5, 3) === 2, "Subtraction failed");
6. Cẩn thận với các Dependency
Dependency giống như các THỎA THUẬN. Chọn đúng, và bạn THẮNG. Chọn sai, và bạn bị khóa vào thứ gì đó mà bạn sẽ hối tiếc.
// Dependency: Sending emails with Nodemailer
const nodemailer = require('nodemailer');
function sendEmail(to, subject, message) {
const transporter = nodemailer.createTransport({ /* config */ });
return transporter.sendMail({ from: "you@example.com", to, subject, text: message });
}
Tránh hardcoding các dependency. Sử dụng trừu tượng hoặc tệp cấu hình để bảo trì an toàn.
7. Tổ chức dự án như một cửa hàng kinh doanh
Một dự án được tổ chức tốt là sự khác biệt giữa một cửa hàng bán đồ cũ và một cửa hàng cao cấp.
Nếu codebase của bạn trông giống như một ngăn kéo đựng đồ linh tinh, thì sẽ chả có ai thèm vào xem và mua hàng của bạn
Còn nếu codebase của bạn được sắp xếp ngăn nắp, gọn gàng thì sẽ có nhiều người vào xem, bán sẽ bán được hàng và thu được nhiều lợi ích.
8. Hãy nhất quán với định dạng
Đừng code như một người có 10 tính cách. Hãy nhất quán với định dạng của bạn. Sử dụng các công cụ như Prettier hoặc ESLint để thực thi phong cách NHẤT QUÁN của bạn. Nếu mọi tệp trông khác nhau, bạn đang tạo ra sự hỗn loạn mà KHÔNG AI muốn sửa chữa.
9. Dừng mã hóa cứng các giá trị
Hardcoding là sự lười biếng trá hình dưới dạng nỗ lực.
// Bad: Hardcoded and rigid
function createUser() {
const maxUsers = 100;
if (currentUsers >= maxUsers) throw "Too many users!";
}
// Clean: Dynamic and flexible
const MAX_USERS = 100;
function createUser() {
if (currentUsers >= MAX_USERS) throw "Too many users!";
}
Vì vậy, hãy tránh nó bằng mọi giá. Hardcoding là lối tắt đưa bạn ra khỏi vách đá.
10. Giữ cho hàm ngắn gọn
Nếu hàm của bạn dài hơn 20 dòng, có lẽ nó đang cố gắng làm quá nhiều việc. Hãy chia nhỏ nó.
function updateCart(cart, item) {
addItemToCart(cart, item);
let total = calculateTotal(cart);
logTransaction(item, total);
return total;
}
function addItemToCart(cart, item) {
cart.items.push(item);
}
Hy vọng bài viết vừa rồi giúp ích cho các bạn!
All Rights Reserved