Nó thực sự có vẻ có mùi, và không nhìn thấy bối cảnh nhiều hơn, không thể nói chắc chắn. Có thể có hai lý do để làm điều này, mặc dù có những lựa chọn thay thế cho cả hai.
Đầu tiên, đó là một cách ngắn gọn để thực hiện chuyển đổi một phần hoặc để lại kết quả với các giá trị mặc định nếu chuyển đổi không thành công. Đó là, bạn có thể có điều này:
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
Tất nhiên, thường điều này được xử lý bằng cách sử dụng ngoại lệ. Tuy nhiên, ngay cả khi cần tránh các ngoại lệ vì bất kỳ lý do gì, có một cách tốt hơn để làm điều này - mẫu TryPude là một lựa chọn.
Một lý do khác là nó có thể là vì lý do thống nhất hoàn toàn, ví dụ, đó là một phần của API công khai, nơi phương thức này được sử dụng cho tất cả các hàm chuyển đổi vì bất kỳ lý do gì (chẳng hạn như các hàm chuyển đổi khác có nhiều đầu ra).
Java không tuyệt vời khi xử lý nhiều đầu ra - nó không thể có các tham số chỉ đầu ra như một số ngôn ngữ hoặc có nhiều giá trị trả về như các ngôn ngữ khác - nhưng thậm chí, bạn vẫn có thể sử dụng các đối tượng trả về.
Lý do nhất quán là khá khập khiễng nhưng đáng buồn là nó có thể là phổ biến nhất.
- Có lẽ cảnh sát phong cách tại nơi làm việc của bạn (hoặc cơ sở mã của bạn) đến từ một nền tảng không phải là Java và đã miễn cưỡng thay đổi.
- Mã của bạn có thể là một cổng từ một ngôn ngữ nơi phong cách này là thành ngữ hơn.
- Tổ chức của bạn có thể cần duy trì tính nhất quán API trên các ngôn ngữ khác nhau và đây là kiểu mẫu số chung thấp nhất (đó là sự cố nhưng nó xảy ra ngay cả đối với Google ).
- Hoặc có lẽ phong cách có ý nghĩa hơn trong quá khứ xa xôi và biến thành hình thức hiện tại của nó (ví dụ, nó có thể là mẫu TryPude nhưng một số người tiền nhiệm có thiện chí đã loại bỏ giá trị trả về sau khi phát hiện ra rằng không ai kiểm tra nó cả).