Çözümünüzde özellikle yanlış bir şey yok.
Ama kişisel tercihim, bu yöntemlerin o kadar kullanışlı olmamasıdır. Ve parçası oldukları nesnelerin arayüzünü karmaşık hale getirin.
void moveCameraTo(double latitude, double longitude)
Ben hiçbir sorun basitçe çağıran gördüğünüz gibi gerçekten kodu basitleştirmek gelmez moveCameraTo(new LatLng(latitude, longitude));
's yerinde. Bu yöntem aynı zamanda ilkel saplantı kokuyor.
Bu yöntem ve void moveCameraTo(Location location)
ispat Location.ToLatLng()
yöntemi ile daha iyi çözülebilir moveCameraTo(location.ToLatLng())
.
Bu C # olsaydı ve böyle bir yöntem gerçekten gerekli olsaydı, onları örnek yöntemleri yerine genişletme yöntemleri olarak tercih ederdim. Bu örneği soyutlayıp denemeden önce uzantı yöntemlerinin kullanımı çok açık hale gelecektir. Çünkü basit dönüşümlerle çoklu aşırı yükler yerine tek bir yöntemi taklit etmek çok daha kolay olurdu.
Bu şekilde, örneğin başka bir sınıfta LatLng'in ne olduğunu bilmenin sorumluluğunu ortadan kaldırdığımı düşünüyorum.
Bunun bir sorun olması için hiçbir neden göremiyorum. Kodunuz içerdiği sınıfı referans aldığı sürece void moveCameraTo(LatLng latLng)
, dolaylı olarak buna bağlıdır LatLng
. Bu sınıf asla doğrudan başlatılmasa bile.
Ve işlevi çağırmadan önce verileri hazırlamanız gerekmez.
Ne demek istediğini anlamıyorum. Yeni örnek oluşturmak veya sınıfları birinden diğerine dönüştürmek demekse, bununla ilgili bir sorun görmüyorum.
Bunu düşünerek, söylediklerimin .NET'in API tasarımıyla da desteklendiğini hissediyorum. Tarihsel olarak, birçok .NET sınıfı, farklı parametreler ve içeride basit dönüşümler içeren birçok aşırı yüke sahip olma yaklaşımınızı izledi. Ancak bu, genişletme yöntemleri bulunmadan önceydi. Daha modern .NET sınıfları kendi API'lerinde daha hafiftir ve parametre aşırı yükleri olan herhangi bir yöntem varsa, uzantı yöntemleri olarak sağlanır. Daha eski bir örnek, günlüğe yazmak için düzinelerce aşırı yüke sahip NLog ILogger'dır . Bunu, toplam 3 yöntemi olan yeni Microsoft.Extensions.Logging.ILogger ile karşılaştırın (ve yalnızca günlüğe kaydetmeyi sayıyorsanız 1). Ancak uzatma yöntemleri olarak birçok yardımcı ve çeşitli parametreler vardır .
Bence bu cevap bazı dillerin tasarımı daha hoş hale getirecek araçlara sahip olacağını gösteriyor. Çok fazla Java bilmiyorum, bu yüzden eşdeğer olup olmayacağından emin değilim. Ancak düz statik yöntemler kullanmak bile bir seçenek olabilir.