JavaScript:
Tái cấu trúc mã
Làm thế nào:
Hãy xem một ví dụ đơn giản về cách tái cấu trúc có thể làm cho mã của bạn gọn gàng và dễ đọc hơn. Tại đây, chúng ta tái cấu trúc một hàm tính tổng của một mảng số.
Trước:
function calculateSum(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
console.log(calculateSum([1, 2, 3, 4])); // Kết quả: 10
Sau:
function calculateSum(arr) {
return arr.reduce((sum, num) => sum + num, 0);
}
console.log(calculateSum([1, 2, 3, 4])); // Kết quả: 10
Thấy cách phương thức reduce
làm giảm kích thước của hàm mà vẫn giữ nguyên chức năng không? Đó chính là tái cấu trúc đó.
Sâu hơn
Tái cấu trúc không xuất hiện như một thực hành chính thống cho đến khi cuốn sách “Refactoring: Improving the Design of Existing Code” của Martin Fowler được xuất bản vào năm 1999. Cuốn sách này, cùng với sự nổi lên của phát triển phần mềm linh hoạt, đã giúp đẩy tái cấu trúc vào chính thống.
Mô tả tái cấu trúc như một khía cạnh của phát triển phần mềm giống như giải thích lý do bạn dọn dẹp một xưởng: bạn làm vậy để lần sau khi bạn cần sửa chữa một thứ gì đó (trong trường hợp này là mã), bạn sẽ mất ít thời gian hơn để xử lý hỗn độn và chú trọng hơn vào vấn đề thực sự.
Khi chúng ta nói về các phương án thay thế cho việc tái cấu trúc, chúng ta bước vào một cuộc thảo luận rộng hơn về chiến lược bảo dưỡng phần mềm. Ví dụ, người ta có thể lựa chọn viết lại hoàn toàn, nhưng thường thì điều đó tốn kém và rủi ro hơn. Tái cấu trúc theo từng phần, và bạn sẽ nhận được lợi ích liên tục mà không làm đắm con thuyền bởi một cuộc đại tu đột ngột.
Tái cấu trúc đã được hỗ trợ bởi sự phát triển của các môi trường phát triển tích hợp (IDEs) và công cụ như JSHint, ESLint, và Prettier trong hệ sinh thái JavaScript, giúp tự động kiểm tra chất lượng mã và làm nổi bật các cơ hội cho tái cấu trúc.
Tất cả đều về mã sạch, biểu đạt và dễ bảo trì. Các thuật toán tinh vi, tối ưu hóa cấu trúc dữ liệu, hay thậm chí là thay đổi kiến trúc như chuyển đổi từ lập trình thủ tục sang lập trình hàm có thể là một phần của quá trình tái cấu trúc.
Tái cấu trúc phải được thực hiện một cách cẩn thận; việc có một bộ kiểm tra mạnh mẽ là rất quan trọng để đảm bảo rằng các thay đổi của bạn không làm thay đổi hành vi của phần mềm một cách không mong muốn - một lý do khác tại sao Phát triển Dựa trên Kiểm thử (TDD) kết hợp tốt với tái cấu trúc, vì nó cung cấp mạng lưới an toàn đó theo mặc định.
Xem thêm
Sách Refactoring của Martin Fowler: Refactoring - Improving the Design of Existing Code
Các Khung Kiểm thử JavaScript (để đảm bảo tái cấu trúc không làm hỏng chức năng):
Công cụ Hỗ trợ Chất lượng Mã và Tái Cấu Trúc: