Це справді здається смердючим, і не бачачи більше контексту, неможливо сказати точно. Причин для цього може бути дві, хоча альтернативи для обох є.
По-перше, це стислий спосіб здійснення часткової конверсії або залишення результату зі значеннями за замовчуванням, якщо конверсія не вдається. Тобто у вас може бути таке:
public void ConvertFoo(Foo from, Foo to) {
if (can't convert) {
return;
}
...
}
Foo a;
Foo b = DefaultFoo();
ConvertFoo(a, b);
// If conversion fails, b is unchanged
Звичайно, зазвичай це вирішується за допомогою винятків. Однак, навіть якщо винятків потрібно уникати з будь-якої причини, є кращий спосіб зробити це - шаблон TryParse, який є одним із варіантів.
Інша причина полягає в тому, що це може бути з чисто узгоджених причин, наприклад, це частина публічного API, де цей метод застосовується для всіх функцій перетворення з будь-якої причини (наприклад, інші функції перетворення, що мають кілька результатів).
Java не чудово справляється з кількома виходами - він не може мати лише параметри виводу, як деякі мови, або мати кілька повернених значень, як інші - але навіть все-таки ви можете використовувати об'єкти повернення.
Причина послідовності є досить кульгавою, але, на жаль, вона може бути найбільш поширеною.
- Можливо, поліцейські стилів на робочому місці (або у вашій кодовій базі) походять з не-Java-фону та неохоче змінюються.
- Ваш код, можливо, був портом з мови, де цей стиль є більш ідіоматичним.
- Можливо, вашій організації потрібно буде підтримувати послідовність API для різних мов, і це був стиль найменшого загального знаменника (це просто, але це трапляється навіть для Google ).
- Або, можливо, стиль мав більше сенсу в далекому минулому і перетворився на його сучасний вигляд (наприклад, це міг бути шаблон TryParse, але якийсь навмисний попередник видалив повернене значення після того, як виявив, що його ніхто взагалі не перевіряв).