Эта статья требует дополнительных ссылок для проверки . ( май 2008 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Цепочка методов , также известная как идиома именованных параметров , является распространенным синтаксисом для вызова нескольких вызовов методов в объектно-ориентированных языках программирования . Каждый метод возвращает объект, что позволяет объединить вызовы в один оператор, не требуя переменных для хранения промежуточных результатов. [1]
Обоснование [ править ]
Объявления локальных переменных - это синтаксический сахар . [2]
Цепочка методов устраняет дополнительную переменную для каждого промежуточного шага. Разработчик избавлен от когнитивного бремени именования переменной и ее запоминания.
Цепочка методов упоминается как «крушение поезда» из-за увеличения числа методов, которые идут один за другим в одной строке, что происходит по мере того, как все больше методов объединяются в цепочку. [3]
Похожий синтаксис - это каскадирование методов , когда после вызова метода выражение оценивает текущий объект, а не возвращаемое значение метода. Каскадирование может быть реализовано с использованием цепочки методов, когда метод возвращает сам текущий объект . Каскадирование - ключевая техника в свободных интерфейсах , и поскольку цепочка широко применяется в объектно-ориентированных языках, в то время как каскадирование - нет, эту форму «каскадирование за цепочкой с возвратом этого » часто называют просто «цепочкой». И цепочка, и каскадирование пришли из языка Smalltalk .
Хотя цепочка является синтаксисом, она имеет семантические последствия, а именно требует, чтобы методы возвращали объект, и при реализации каскадирования через цепочку это должен быть текущий объект. Это предотвращает использование возвращаемого значения для каких-либо других целей, например, для возврата значения ошибки .
Примеры [ править ]
Распространенным примером является iostream в C ++ , где, например, <<
возвращается левый объект, что позволяет создавать цепочки.
Сравнивать:
a << b << c ;
эквивалент:
a << b ; a << c ;
Другой пример в JavaScript использует встроенные методы Array:
кое-что . фильтр ( x => x . count > 10 ) . sort (( a , b ) => a . count - b . count ) . карта ( x => x . имя )
См. Также [ править ]
- Свободный интерфейс
- Конвейер (Unix)
- Вложенность (вычисления)
- Строитель шаблон
- Пирамида гибели (программирование)
Ссылки [ править ]
- ^ «Применение цепочки методов» . http://firstclassthoughts.co.uk/ : Мысли первого класса. Архивировано из оригинала 2011-02-22 . Проверено 13 апреля 2011 .
Чтобы упростить повторяющиеся взаимодействия объектов с одним и тем же объектом, следует применить старый трюк Method Chaining, берущий начало в мире Smalltalk. Идея заключается в том , чтобы вернуть методы ,
CS1 maint: обескураженный параметр ( ссылка )this
а неvoid
, влияя таким образом особенноset()
иadd()
методы. Цепочка методов возникла во время стремления разработчиков Smalltalk минимизировать количество ключевых слов в языке, что привело к открытию того, чтоvoid
ключевое слово является ненужным !. - ^ «CMSC 631 - Анализ и понимание программ» (PDF) .
• Синтаксический сахар для локальных объявлений - пусть x = e1 в e2 является сокращением от (λx.e2) e1
- ^ Мартин, Роберт Сесил (2008). Чистый код: руководство по созданию гибкого программного обеспечения . Прентис Холл . ISBN 0-13-235088-2. CS1 maint: обескураженный параметр ( ссылка )
- ^ Объединение методов в PHP
Внешние ссылки [ править ]
- Создание DSL в Java с использованием концепции цепочки методов