Kỹ thuật Extract Method

Giới thiệu nội dung bài viết

Chào các em, chủ đề hôm nay của anh sẽ bàn về kỹ thuật Extract Method? Kỹ thuật nằm nhằm làm cho một method dài khó đọc trở thành một phương thức nhỏ hơn, dễ đọc hơn.


Vấn đề đang gặp ?

Như ví dụ mình có đoạn code sau đây.

1
2
3
4
5
6
7
void printOwing() {
  printBanner();

  // Print details.
  System.out.println("name: " + name);
  System.out.println("amount: " + getOutstanding());
}

Như vậy, các em sẽ thấy đoạn code ở trên có vấn đề. Trong hàm printOwing đầu tiên là mình in printBanner(), sau đó mình lại tiếp tục viết các dòng code để in chi tiết (Print details) . Như vậy không hợp lý lắm mà thay vào đó mình nên nhóm các dòng code in chi tiết (Print details) thành một method để mình gọi thôi.


Giải quyết vấn đề bằng kỹ thuật Extract Method

1
2
3
4
5
6
7
8
9
void printOwing() {
  printBanner();
  printDetails(getOutstanding());
}

void printDetails(double outstanding) {
  System.out.println("name: " + name);
  System.out.println("amount: " + outstanding);
}

Như các em có thể thấy cách giải quyết ở trên, mình tạo một method mới tên là printDetails() sau đó mình di chuyển hết tất cả các dòng code liên quan đến print detail lại với nhau và để nó trong method printDetails(). Tiếp đến ta chỉ cần gọi nó trong method printOwing() là xong.


Tổng kết

Như các em có thể thấy phương pháp Extract Method giúp mình nhóm các dòng code liên qua lại với nhau thành một method, Các method dài quá 30 dòng thì các em nên tách thành những method nhỏ hơn. Trong lập trình mỗi method tối đa 15 -> 20 dòng là chuẩn.

Mỗi method chỉ nên làm duy nhất một nhiệm vụ . Anh ví dụ như printDetails thì nhiệm vụ của nó chỉ in chi tiết thôi chứ không làm các công việc khác trong method printDetails.

Subcribe kênh youtube để được các bài viết hay


Comments