Gerçekten koklamak gibi görünüyor ve daha fazla bağlam görmeden kesin olarak söylemek mümkün değil. Her ikisinin de alternatifi olmasına rağmen, bunu yapmanın iki nedeni olabilir.
Birincisi, kısmi dönüşüm uygulamanın veya dönüşüm başarısız olursa sonucu varsayılan değerlerle bırakmanın kısa bir yoludur. Yani, bu olabilir:
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
Tabii ki, genellikle bu istisnalar kullanılarak ele alınır. Ancak, hangi nedenle olursa olsun istisnalardan kaçınılması gerekse bile, bunu yapmanın daha iyi bir yolu var - TryParse modeli bir seçenek.
Diğer bir sebep, tamamen tutarlılık nedeniyle olabilir, örneğin, bu yöntemin, herhangi bir nedenden ötürü tüm dönüşüm işlevleri için kullanıldığı (çoklu çıkışlara sahip diğer dönüşüm fonksiyonları gibi), halka açık bir API'nin bir parçası olması.
Java, birden fazla çıktıyla başa çıkmak için harika değildir - bazı diller gibi sadece çıktı parametrelerine sahip olamaz veya diğerleri gibi birden fazla dönüş değerine sahip olamaz - ancak yine de, dönüş nesneleri kullanabilirsiniz.
Tutarlılık nedeni oldukça topaldır, ancak ne yazık ki en yaygın olanı olabilir.
- Belki de iş yerinizdeki (ya da kod tabanınızdaki) stiller Java dışı bir arka plandan geliyor ve değişmekte isteksizler.
- Kodunuz, bu tarzın daha aptalca olduğu bir dilden yapılmış bir port olabilir.
- Kuruluşunuzun farklı dillerde API tutarlılığını sürdürmesi gerekebilir ve bu en düşük ortak payda stiliydi (bu kesin ama Google için bile geçerli ).
- Veya belki de stil uzak geçmişte daha anlamlıydı ve şu anki biçimine uyuyordu (örneğin, TryParse modeli olabilirdi, ancak bazı iyi niyetli bir selef, kimsenin kontrol etmediğini keşfettikten sonra geri dönüş değerini kaldırmıştı).