Method chaining là gì?

Noun Programming
named parameter idiom
Chuỗi phương thức

Chuỗi phương thức (method chaining hoặc named parameter idiom) là một cú pháp (syntax) phổ biến để gọi (invoke) nhiều lời gọi phương thức (method call) trong ngôn ngữ lập trình hướng đối tượng (object-oriented programming language). Mỗi phương thức trả về một đối tượng (object), cho phép các lời gọi phương thức được xâu chuỗi lại với nhau trong một câu lệnh duy nhất (statement) mà không yêu cầu các biến (variable) lưu trữ các kết quả trung gian (intermediate result).

Một cú pháp tương tự là phân tầng phương thức (method cascading), trong đó sau khi gọi phương thức, biểu thức (expression) sẽ đánh giá (evaluate) đối tượng hiện tại, không phải giá trị trả về return value của phương thức. Cascading có thể được thực hiện bằng cách sử dụng chuỗi phương thức (method chaining) bằng cách để phương thức trả về chính đối tượng hiện tại (sử dụng từ khóa this, self, Me). Cascading là một kỹ thuật quan trọng trong các fluent interface và vì chaining được triển khai (implement) rộng rãi trong các ngôn ngữ hướng đối tượng trong khi cascading thì không, dạng "cascading-by-chaining by returning this" này thường được gọi đơn giản là "chaining". Cả chaining và cascading đều xuất phát từ ngôn ngữ Smalltalk.

Trong khi chaining là cú pháp, nó có kết quả về ngữ nghĩa, cụ thể là yêu cầu các phương thức trả về một đối tượng và nếu thực hiện cascading thông qua chaining thì đây phải là đối tượng hiện tại. Điều này ngăn không cho giá trị trả về được sử dụng cho một số mục đích khác, chẳng hạn như trả về giá trị lỗi (error value).

Một ví dụ phổ biến là iostream trong C ++, trong đó ví dụ


a 

Tương đương với:


a 

Một ví dụ khác trong JavaScript sử dụng các phương thức tích hợp sẵn (built-in method) của mảng (Array) :


somethings
  .filter(x => x.count > 10)
  .sort((a, b) => a.count - b.count)
  .map(x => x.name)

Learning English Everyday