- vừa được xem lúc

Fine-grain refactoring deep dive (1) - Introduction

0 0 28

Người đăng: logbasex

Theo Viblo Asia

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Regular Expression và cuộc đời bạn sẽ bớt khổ (Updated v2.2)

. Regular Expression (RegEx) à? Nghe quen quen. . Bạn cần xử lý validate (kiểm tra tính hợp lệ) các trường dữ liệu nhập vào ô Text. .

0 0 109

- vừa được xem lúc

Naming rules - Các quy tắc vàng trong làng đặt tên

. . Đã bao giờ bạn gặp khó khăn khi phải suy nghĩ nên đặt tên biến/hàm như thế nào trong lúc code.

0 0 34

- vừa được xem lúc

Tóm tắt cuốn Clean Code của Uncle Bob

Bài viết được dịch từ Gist của wojteklu. . Quy tắc chung. .

0 0 103

- vừa được xem lúc

Tôi đi học code - lớp mẫu giáo

Chào mừng các bạn quay trở lại với blog duthaho.com.

0 0 60

- vừa được xem lúc

Lean Code CSS

Khi thiết kế và phát triển web, đôi lúc chúng ta gặp khó khăn trong việc tổ chức và quản lý code CSS. Nhiều nhà thiết kế website nghĩ rằng việc tổ chức và quản lý code thật là rắc rối, tuy nhiên nếu b

0 0 32

- vừa được xem lúc

Design Patterns là gì? Tại sao nó lại là trợ thủ đắc lực của Developers

Design Pattern là một giải pháp chung để giải quyết các vấn đề phổ biến khi thiết kế phần mềm trong lập trình hướng đối tượng OOP. Design pattern là các giải pháp tổng thể đã được tối ưu hóa, được tái

0 0 60