Làm thế nào để bạn gọi quá trình lấy một phần của hàm và tạo một hàm riêng của nó?


8

Tôi biết đã có một thuật ngữ kỹ thuật cho việc này. Tôi chỉ không thể nhớ nó là gì.

Nếu tiêu đề cần làm rõ, đây là những gì tôi muốn nói; Nếu đây là mã cũ:

Result foobar(Param1,Param2,Param3) {
  code that does abc
  code that does xyz
  code that does asdf
  more code that does something
}

và nó được đổi thành:

SomeResult do_xyz(SomeParams) {
  code that does xyz
}
Result foobar() {
  code that does abc
  do_xyz(args);
  code that does asdf
  more code that does something
}

Tôi đã gọi nó là 'Dọn dẹp'. Tôi không thể tin ai đó đã quyết định gọi đây là một cái gì đó đặc biệt, họ phải có chất làm đầy cần thiết cho cuốn sách của họ.
James

@James: 'dọn dẹp' là chung chung hơn rất nhiều. Thật ý nghĩa khi đưa ra những điều mà bạn cần nói về những cái tên thường xuyên, vì vậy bạn có thể nói về chúng hiệu quả hơn. Đó là lý do duy nhất cho các mẫu.
bitmask

Câu trả lời:


21

Thuật ngữ kỹ thuật cho điều này là Phương pháp trích xuất

Xem http://www.refactoring.com/catalog/extractMethod.html

Biến đoạn này thành một phương thức có tên giải thích mục đích của phương thức.

void printOwing() {
    printBanner();

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

                                                                                                         http://www.refactoring.com/catalog/arrow.gif

void printOwing() {
    printBanner();
    printDetails(getOutstanding());
}

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

5
khai thác - đó là nó!
bitmask

Phương pháp trích xuất. Bạn nên kiểm tra các mẫu thiết kế .
Larry Hector

9
@LarryHector: Tôi không chắc đó là Mẫu thiết kế (GoF) . Có một thứ gọi là Phương thức mẫu có một chút tương tự, và tất nhiên DP là cơ bản được đọc, nhưng Phương thức trích xuất cũng như rất nhiều phép tái cấu trúc khác thực tế là trong các tài liệu khác và đó là Tái cấu trúc của Martin Fowler .
herby

1
@herby: Bạn đã đúng, nó được định nghĩa trong Tái cấu trúc của Fowler , cảm ơn vì đã sửa. Ngoài ra còn có một phần hay về cách thức / lý do của nhiều phương pháp tái cấu trúc trong Làm việc với Bộ luật Di sản của Michael Feathers .
Larry Hector

8

Bản thân quá trình này được gọi là Tái cấu trúc mã và phương thức được gọi là Phương thức trích xuất và nó phù hợp để áp dụng SRP (nguyên tắc trách nhiệm duy nhất) cho mã.


Là "Tái cấu trúc" một lỗi đánh máy? (câu hỏi trung thực!)
bitmask

@bitmask Rất có thể là
marktani

Vâng, đó là một lỗi đánh máy, vì có vẻ như từ các liên kết, nó được dự định là "Tái cấu trúc"
Yusubov

5
Tái cấu trúc là ít cụ thể. Phương pháp trích xuất là một trong nhiều, nhiều loại tái cấu trúc. Và không ai liên quan đến SRP, mặc dù đó là một trong nhiều lý do bạn có thể muốn cấu trúc lại.
pdr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.