Viết mã JavaScript sạch, dễ đọc và dễ bảo trì là một kỹ năng quan trọng đối với mọi lập trình viên. Dưới đây là danh sách các quy tắc phổ biến và tốt nhất mà bạn nên tuân thủ khi viết code JavaScript:
function calculateSum(a, b) {
if (typeof a !== "number" || typeof b !== "number") {
throw new Error("Both arguments must be numbers");
}
return a + b;
}
Mặc dù JavaScript cho phép bỏ qua dấu chấm phẩy trong nhiều trường hợp, nhưng việc thêm dấu chấm phẩy giúp tránh lỗi và tăng tính rõ ràng.
let x = 10;
let y = 20;
console.log(x + y);
camelCase
(viết thường chữ cái đầu tiên, viết hoa chữ cái đầu của từ tiếp theo).PascalCase
(viết hoa chữ cái đầu tiên của mỗi từ).// Biến và hàm
let userName = "Alice";
function calculateTotal() {}
// Class
class UserAccount {}
Không để khoảng trắng thừa ở cuối dòng hoặc giữa các toán tử.
// Không nên
let x = 10 ;
// Nên
let x = 10;
const
: Sử dụng khi giá trị không thay đổi.let
: Sử dụng khi giá trị có thể thay đổi.var
: Không khuyến khích vì phạm vi hoạt động không rõ ràng (hoisting).const pi = 3.14;
let counter = 0;
counter++;
Tránh sử dụng biến mà chưa khai báo, điều này có thể dẫn đến tạo biến toàn cầu không mong muốn.
// Không nên
x = 10;
// Nên
let x = 10;
Hàm nên ngắn gọn và thực hiện một nhiệm vụ cụ thể. Nếu hàm quá dài, hãy tách thành các hàm nhỏ hơn.
// Không nên
function processUserData(user) {
// Xử lý dữ liệu phức tạp...
}
// Nên
function validateUser(user) { /* ... */ }
function formatUserData(user) { /* ... */ }
Thiết lập giá trị mặc định cho tham số để tránh lỗi khi người dùng không truyền đủ đối số.
function greet(name = "Guest") {
console.log(`Hello, ${name}!`);
}
Hạn chế việc thay đổi trạng thái bên ngoài (global variables, DOM,...) trong hàm. Hãy sử dụng pure functions càng nhiều càng tốt.
// Không nên
let total = 0;
function addToTotal(amount) {
total += amount;
}
// Nên
function addToTotal(total, amount) {
return total + amount;
}
Luôn kiểm tra kiểu dữ liệu của tham số để đảm bảo hàm hoạt động đúng.
function add(a, b) {
if (typeof a !== "number" || typeof b !== "number") {
throw new Error("Both arguments must be numbers");
}
return a + b;
}
Sử dụng try-catch
để bắt và xử lý lỗi trong các đoạn mã có khả năng gây lỗi runtime.
function divide(a, b) {
try {
if (b === 0) throw new Error("Cannot divide by zero");
return a / b;
} catch (error) {
console.error(error.message);
}
}
Nếu một giá trị được tính toán nhiều lần, hãy lưu trữ nó trong một biến để tránh tính toán lại.
// Không nên
for (let i = 0; i < Math.random(); i++) {
console.log(i);
}
// Nên
const randomValue = Math.random();
for (let i = 0; i < randomValue; i++) {
console.log(i);
}
Tránh sử dụng các phương thức nặng nề (như .map
, .filter
) trong vòng lặp lớn nếu không cần thiết.
// Không nên
for (let i = 0; i < array.length; i++) {
array[i] = array[i] * 2;
}
// Nên
array.forEach((item, index) => {
array[index] = item * 2;
});
Tránh giữ lại các tham chiếu không cần thiết đến đối tượng hoặc biến, đặc biệt khi làm việc với closure.
function createClosure() {
let bigArray = new Array(1000000).fill("data");
return function () {
console.log(bigArray.length);
};
}
const closure = createClosure();
closure = null; // Giải phóng bộ nhớ
Luôn xóa sự kiện hoặc timer khi không còn sử dụng để tránh memory leaks.
let intervalId = setInterval(() => {
console.log("Running...");
}, 1000);
clearInterval(intervalId); // Xóa timer khi không cần
Chú thích giúp người khác hiểu rõ ý nghĩa của mã nguồn.
/**
* Hàm tính tổng hai số
* @param {number} a - Số thứ nhất
* @param {number} b - Số thứ hai
* @returns {number} Tổng của hai số
*/
function add(a, b) {
return a + b;
}
Nếu dự án lớn, hãy viết tài liệu mô tả cách sử dụng và cấu trúc của mã nguồn.
Sử dụng các thư viện như Jest, Mocha để viết unit test cho mã nguồn.
test("adds 1 + 2 to equal 3", () => {
expect(add(1, 2)).toBe(3);
});
Kiểm tra các trường hợp đặc biệt như đầu vào rỗng, null, undefined, hoặc giá trị cực đại/cực tiểu.
Tuân thủ các chuẩn coding style như:
Cài đặt và sử dụng các công cụ như ESLint và Prettier để tự động kiểm tra và định dạng mã nguồn.
Dưới đây là các quy tắc chính cần tuân thủ khi viết code JavaScript:
const
và let
, tránh var
.try-catch
.Tuân thủ các quy tắc này sẽ giúp bạn viết mã JavaScript sạch, dễ đọc, dễ bảo trì và giảm thiểu lỗi.