Вы, наверное, слышали и встречали такую штуку, а некоторые даже писали.

instance.Method1().Method2()

По своему определению текучие интерфейсы представляют из себя набор методов, где каждый метод добавляет или удаляет какое-то свойство, то есть меняет инстанс.

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

Как? Ну это довольно просто:

void Method() {}

Меняем на

T Method() { return this; }

Где T может быть текущим типом, может быть интерфейсом (как в оригинале было и задумано, но структуры все портят).

Зачем? Лаконичность кода и легкость восприятия.

Пишите в комментах где вы используете fluent-interface подход.

Read More