Как указано в ответе на лету. Именованные параметры очень помогли бы, и вы можете эмулировать что-то подобное на Java, как описано в этом question.
В большинстве случаев, особенно если вы используете api, который используется третьими лицами, вы хотите иметь объекты данных, которые хранят параметры для конструкторов или методов, которые принимают более трех параметров. Это шаблон под названием parameter objects. Это позволяет вам выполнять проверку ввода в объекте параметра и поддерживать методы чистыми и т. Д.
Если вы создаете объект параметра, который имеет только сеттеры, у вас есть четкое именование для того, чтобы клиент мог видеть, куда его поместить. Как и в этом примере:
public printAddress(String name, String street, String city) {...}
print address(name, street, city);
Если вы используете объект параметра у вас есть что-то подобное:
public printAddress(Address address) {...}
Address address = new Address();
address.setName(name);
address.setStreet(street);
address.setCity(city);
printAddress(address);
Это больше кода, но это будет гораздо более удобным для чтения. Если вы хотите уменьшить количество требуемых кодов, вы можете пойти с method chaining. Заставьте сеттеры вернуть объект, над которым они работают. Теперь код будет выглядеть следующим образом:
public printAddress(Address address) {...}
printAddress(new Address().setName(name).setStreet(street).setCity(city))
Это выглядит странно на первый взгляд, но если вы привыкли к этому, это будет сделать код меньше, более удобным для чтения, и вы хотите иметь дело со всеми отладочных вопросы вашего клиент.
Это дерьмо, серия множества параметров String не является безопасным по типу, поскольку ее очень легко транспонировать неправильный параметр в неправильном месте. Посмотрите на мой ответ для лучшего примера. В этом конкретном случае компилятор может помочь вам заметить ошибки, потому что один неверный параметр вводит в неправильное место. Используйте его ... –
Я согласен с mP, именованные параметры imho подходят только в том случае, если у метода есть несколько необязательных комбинаций параметров (что часто означает, что в любом случае должны быть несколько методов или по-разному типизированные параметры). – dbemerlin