Comments 11
По поводу улучшения читаемости:
bank.transfer(1L, 2L, 1200, 1.2);
При вызове с именованными параметрами мы добиваемся той же читаемости:
bank.transfer(
fromCustomerId: 1L,
toCustomerId: 2L,
amount: 1200,
fee: 1.2
);
Стоит ли усложнять систему билдерами, если язык позволяет пойти таким путём?
Или, если не позволяет, bank.transfer(SenderId(1), ReceiverId(2), Amount(1200), Fee(1.2));
Соглашусь что если в языке есть поддержка именованных параметров, то их использование снимает часть вопросов с читаемостью. Но не во всех языках это есть, в частности в Java, на которой приведены примеры, к сожалению, такой возможности нет.
А мне нравится юмор.
хорошая статья, не знал что это называется fluent подходом. Меня тоже всегда тянуло в эту сторону, и главная причина мне кажется вот эта
При Fluent подходе мы будем видеть только те подсказки, которые доступны на конкретном шаге.
тоесть мы можем пользоваться библиотекой как конструктором. Может вы знаете язык/языки которые специально проэктировались для такого подхода?
требования примерно такие:
можно гибко настраивать возможности следующего шага
синтаксис заточен под такой подход
Рад что понравилась статья.
По поводу языков - в целом точно такой подход можно реализовать на С#. На уровне модификаторов методов интерфейсов можно скрыть стандартные методы от Object и останутся только публично объявленные в интерфейсе.
В Java мы в в любом случае будем иметь доступ ко всем методам интерфейса + стандартные методы от Object, но в большинстве случаев это не сильно мешает.
О том как принципиально подходить к реализации подобных интерфейсов в контексте Java я планирую написать в следующих статьях цикла. Переложить подход на другие языки не должно быть сложно.
Fluent API. Часть 2 — а оно нам надо?