Я думаю, что в целом нормально комбинировать несколько операций в одном вызове (просто жаль, что в Java нет методов расширения, чтобы сделать его красивее), но я бы посоветовал вам , а не , чтобы включить логикув соответствии.С анонимными классами это просто становится беспорядочным.
Вместо этого объявляйте свои предикаты, упорядочения, проекции и т. Д. Как константы:
private static Function<Shape, ModelBean> MODEL_BEAN_PROJECTION =
new Function<Shape, ModelBean>() {
final ModelBeanCreator binder = new ModelBeanCreator();
@Override
public ModelBean apply(Shape input) {
return binder.createModelBean(input);
}
};
, затем вы можете использовать MODEL_BEAN_PROJECTION
в своем вызове метода позже,Таким образом, вы можете получить код, который на самом деле достаточно прост для чтения, несмотря на большие усилия.
С другой стороны, возможность использования локальной переменной для описания того, что вы получили на каждом этапепреобразование также потенциально полезно.Часто стоит попробовать какой-то код в обоих направлениях и посмотреть, какой из них вы найдете более читабельным - и спросить коллегу тоже.Также поэкспериментируйте с различными параметрами пробелов - я обнаружил, что разница в удобочитаемости кода, использующего пробелы разумно и не может быть огромной.