Tidak ada yang salah dengan solusi Anda.
Tetapi preferensi pribadi saya adalah bahwa metode-metode itu tidak berguna. Dan hanya menyulitkan antarmuka objek apa pun yang menjadi bagiannya.
Tidak void moveCameraTo(double latitude, double longitude)
benar-benar menyederhanakan kode, karena saya tidak melihat masalah hanya memanggil moveCameraTo(new LatLng(latitude, longitude));
tempat itu. Metode ini juga berbau obsesi primitif.
Itu void moveCameraTo(Location location)
bisa lebih baik diselesaikan dengan membuktikan Location.ToLatLng()
metode dan panggilan moveCameraTo(location.ToLatLng())
.
jika ini adalah C # dan jika metode seperti itu benar-benar diperlukan, saya lebih suka mereka sebagai metode ekstensi daripada metode contoh. Penggunaan metode ekstensi akan menjadi sangat jelas jika Anda mencoba abstrak dan uji unit contoh ini. Karena akan jauh lebih mudah untuk hanya memalsukan metode tunggal daripada banyak kelebihan dengan konversi sederhana.
Saya pikir dengan cara ini saya menghilangkan tanggung jawab untuk mengetahui apa itu LatLng di kelas lain, misalnya.
Saya tidak melihat alasan mengapa ini akan menjadi masalah. Selama kode Anda merujuk kelas yang berisi void moveCameraTo(LatLng latLng)
, itu masih secara tidak langsung bergantung pada LatLng
. Bahkan jika kelas itu tidak pernah langsung dipakai.
Dan Anda tidak perlu menyiapkan data sebelum memanggil fungsi.
Saya tidak mengerti maksud Anda. Jika itu berarti membuat instance baru atau mengubah kelas dari satu ke yang lain, saya tidak melihat masalah dengan itu.
Memikirkan hal itu, saya merasa bahwa apa yang saya katakan juga didukung oleh desain API. NET itu sendiri. Secara historis, banyak kelas .NET mengikuti pendekatan Anda karena memiliki banyak kelebihan dengan parameter berbeda, dan konversi sederhana di dalamnya. Tapi itu sebelum metode penyuluhan ada. Kelas .NET yang lebih modern lebih ringan di API mereka sendiri dan jika ada metode dengan kelebihan parameter, mereka disediakan sebagai metode ekstensi. Contoh yang lebih lama adalah NLog ILogger yang memiliki lusinan beban berlebih untuk menulis log. Bandingkan dengan Microsoft.Extensions.Logging.ILogger yang lebih baru yang memiliki total 3 metode (dan hanya 1 jika Anda menghitung pencatatan sendiri). Tetapi ada banyak pembantu dan berbagai parameter sebagai metode ekstensi .
Saya pikir jawaban ini menunjukkan bahwa beberapa bahasa akan memiliki alat untuk membuat desain seperti ini lebih bagus. Saya tidak tahu banyak tentang Java, jadi saya tidak yakin apakah akan ada yang setara. Tetapi bahkan menggunakan metode statis biasa mungkin bisa menjadi pilihan.