Fluent interface в Delphi

Какие плюсы и минусы в использовании fluent-интерфейсов в Delphi?

Fluent-интерфейсы должны повысить читаемость, но я немного скептически отношусь к одному длинному LOC, который содержит много цепочек методов.

Есть ли проблемы с компилятором?
Есть ли проблемы с отладкой?
Есть ли проблемы со временем выполнения/обработкой ошибок?

Интерфейсы Fluent используются, например, в TStringBuilder, THTMLWriter и TGpFluentXMLBuilder.


Обновлено:
Дэвид Хеффернан спросил, какие вопросы меня волнуют. Я немного подумал над этим, и в целом вопрос заключается в разнице между "явным указанием того, как это делается" и "предоставлением компилятору решать, как это делается".

АФАИКС, нет никакой документации о том, как цепочки методов на самом деле обрабатываются компилятором, как нет и спецификации того, как компилятор должен обрабатывать цепочки методов.

В этой статье мы можем прочитать о том, что компилятор добавляет два дополнительных var-параметра к методам, объявленным как функции, и что стандартная конвенция вызова помещает три параметра в регистр, а следующие - в стек. Поэтому "метод беглой функции" с двумя параметрами будет использовать стек, тогда как "метод обычной процедуры" с двумя параметрами использует только регистр.

Мы также знаем, что компилятор делает некоторую магию для оптимизации двоичного кода (например, строка как результат функции, порядок оценки, ссылка на локальный proc), но иногда с неожиданными побочными эффектами для программиста.

Так что тот факт, что управление памятью/стеком/регистрами сложнее, и тот факт, что компилятор может творить какую-то магию с непреднамеренными побочными эффектами, мне кажется довольно вонючим. Отсюда вопрос.

После того, как я прочитал ответы (очень хорошие), мое беспокойство сильно уменьшилось, но предпочтения остались прежними :)

31
задан Community 23 May 2017 в 12:07
поделиться