Vấn đề :

Bạn có một đoạn mã, chúng đã bị gộp lại vào với nhau

Giải pháp:

Thực hiện tách mã này ra một hàm mới (hoặc hàm mới) và thay thế mã cũ bằng cách gọi tới hàm.

Tại sao lại cấu trúc lại ?

Ta có thể thấy càng nhiều dòng mã trong hàm, thì nó càng gây khó khăn trong việc hiểu được hàm này làm là gì. Điều đó là lý do chính của việc tại sao ta phải cấu trúc lại.

Ngoài việc loại bỏ các câu lệnh không cần thiết trong đoạn mã của bạn, hàm khai căn cũng là một bước trong nhiều cách tiếp cận phương pháp tái cấu trúc.

Lợi ích

Giúp cho mã dễ hiểu hơn ! Đảm bảo cung cấp tên có thể mô tả mục đích của rõ ràng của hàm : createOrder(), renderCustomerInfo(), etc.. cho nó.

Giảm thiểu mã trùng lặp . Thường thường mã được tìm thấy trong hàm có thể là được sử dụng lại ở một phần nào đó trong chương trình của bạn. Vì vậy bạn có thể thay thế việc lặp lại bằng cách gọi nó tới hàm mới của bạn.

Tách riêng biệt một phần mã độc lập, điều đó có nghĩa rằng lỗi được giảm thiểu rõ ràng ( ví dụ như nếu biến ta đặt sai được thay đổi ).

Làm thế nào để tái cấu trúc

  1. Tạo mới một hàm mới và đặt tên cho nó làm sao để tên của hàm thể hiện mục đích mà nó thực hiện
  2. Sao chép chính xác đoạn mã vào hàm mới của bạn. Xoá đoạn ở mã ở vị trí cũ đi và gọi tới hàm mới thay thế ở đây.

Tìm toàn bộ biến được sử dụng ở đoạn mã. Nếu chúng được khởi tạo bên trong đoạn mã và bên ngoài chúng không được sử dụng thì chỉ cần giữ nguyên chúng. Chúng ta sẽ biến chúng thành biến cục bộ cho hàm mới.

  1.  Nếu biến là được khởi tạo trước đoạn mã bạn đang khai căn, bạn sẽ cần chuyển vài biến tới tham số của hàm mới mà bạn yêu cầu để sử dụng giá trị trước đã bao gồm của chúng. Thường thì khá đơn giản để thoát khỏi những biến này bằng việc sắp xếp mẫu thay thế với câu lệnh truy vấn.
  2. Nếu bằng một cách nào đấy bạn nhìn thấy biến cục bộ thay đổi trong mã khai căn thì điều đấy có nghĩa rằng sau này bạn sẽ cần đến  giá trị được thay đổi này trong hàm chính của bạn. Kiểm tra lại lần nữa, và nếu đây là trường hợp thật, trả về giá trị của biến tới hàm chính để giữ mọi chức năng.

 

Nguồn: https://sourcemaking.com/refactoring/extract-method