Каковы плюсы и минусы использования свободного интерфейса в Delphi?
Свободные интерфейсы, как предполагается, повышают читаемость, но я немного скептически отношусь к одному длинному LOC, который содержит много прикованных методов.
Есть ли проблемы с компилятором?
Существуют ли какие-либо проблемы отладки?
Есть ли проблемы с обработкой/ошибкой?
Свободные интерфейсы используются, например, TStringBuilder, THTMLWriter и TGpFluentXMLBuilder.
Обновлено:
Дэвид Хеффернан задал вопросы, о которых я беспокоился. Мне была дана эта мысль, и общая проблема заключается в различии между "явно указывая, как это делается", и "позволяя компилятору решить, как это сделать".
AFAICS, нет документации о том, как обработчики цепочки фактически обрабатываются компилятором, ни какая-либо спецификация того, как компилятор должен обрабатывать цепные методы.
В в этой статье мы можем прочитать о том, как компилятор добавляет два дополнительных параметра var к параметрам, объявленным как функции, и что стандартный вызов соглашение помещает три параметра в регистр и следующие в стек. "Свободный функциональный метод" с 2 параметрами будет использовать стек, тогда как "обычный метод процедуры" с 2 параметрами использует регистр.
Мы также знаем, что компилятор делает некоторую магию для оптимизации двоичного файла (например, строка как результат функции, порядок оценки, ref для локального proc), но иногда с удивительными побочными эффектами для программиста.
Так что тот факт, что управление памятью/стеком/регистром более сложный, и тот факт, что компилятор может сделать какую-то магию с непреднамеренными побочными эффектами, довольно вонючий для меня. Отсюда вопрос.
После того, как я прочитал ответы (очень хорошие), моя забота сильно сократилась, но мои предпочтения все те же:)