Fine-grain refactoring deep dive (1) – Introduction

Thế nào là refactoring? “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.” — MartinFowler “Tái cấu trúc là quá trình thay đổi hệ thống phần mềm theo một cách mà không làm thay đổi

Thế nào là refactoring?

“Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.” — MartinFowler

“Tái cấu trúc là quá trình thay đổi hệ thống phần mềm theo một cách mà không làm thay đổi hành vi bên ngoài của mã nguồn nhưng vẫn cải thiện cấu trúc bên trong của nó”.

Từ “factor” bắt nguồn từ tiếng Latin có nghĩa là “maker”, nghĩa là mọi vật đều được tạo từ các thành phần riêng của nó, do factor/factoring nghĩa là tìm kiếm xem vật đó được tạo nên từ các thành phần gì và refactoring chính là quá trình sắp xếp lại cách thành phần đó theo một cách khác mà không thay đổi bản chất của vật đó.

Trong quá trình viết code nói chung, có những nguyên tắc khá phổ biến như là If It Is Working Dont Change, If It Aint Broke Dont Fix It… nghĩa là nếu code đã chạy rồi mà không có yêu cầu thay đổi logic thì đừng động vào nữa, bạn sẽ mất thời gian kiểm thử cho một giải pháp chưa hẳn đã tốt hơn thay vì thay vì dành effort cho những task khác ở trong một Agile Sprint. Nhưng với Refactoring, chúng ta sẽ được tiếp cận bằng một cách khác, tuy nhiên việc đầu tiên thì chúng ta nên nắm rõ/tuân thủ những điều sau:

  1. Refactoring không phải là viết lại code (Reworking), mà là sắp xếp lại bằng một mã nguồn tương đương.
  2. Refactoring từng bước nhỏ (Small Step).
  3. Không refactoring cùng lúc với việc thay đổi functionality của code (Đảm bảo về Unit Testing).
  4. Không refactoring quá mức cần thiết (refactoring mercilessly).
  5. Refactoring là một quá trình cải tiến liên tục chứ không chỉ đơn thuần là việc đọc ở đâu đó một vài refactoring pattern rồi ốp thẳng vào code. Mỗi lần chúng ta gặp lại những đoạn code mà mình từng viết, chúng ta nhận ra một vài nhược điểm mà có thể tái cấu trúc lại tốt hơn. Rồi chúng ta tái cấu trúc nó và cứ tiếp tục như vậy. Đến cuối cùng có thể chúng ta sẽ không có được refactoring pattern tốt nhất, nhưng sau nhiều lần cải tiến với việc nắm rõ được ưu và nhược điểm của nhiều loại refactoring pattern, chúng ta có thể thay đổi linh hoạt dựa trên yêu cầu được đặt ra.

Nếu Refactoring là một AmeliorationPattern, thì hai nguyên tắc IIIWDC, IIABDFI nêu trên đều là những AntiPattern.

Amelioration Pattern…. là những design pattern giúp bạn cải thiện mã nguồn trở nên tốt hơn, dễ bảo trì, mở rộng.

Anti Pattern… là những design pattern được xem là bad practice, nên tránh khi viết code.

image.png

Có thể code sau khi refactor sẽ “tệ hơn” lúc ban đầu, nhưng không sao cả, có lẽ cách nhanh nhất để trở nên thông thạo refactoring đó chính là liên tục mắc sai lầm và học hỏi ngay từ sai lầm trước đó. OK, let’s do refactor then push it to master branch. Getting fired or getting better? Go big or go home? 😂😂 (just for fun).

image.png

Refactoring madness.
image.png

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ