Não há nada de particularmente errado com sua solução.
Mas minha preferência pessoal seria que esses métodos não sejam tão úteis. E complique a interface de qualquer objeto do qual eles se separem.
O void moveCameraTo(double latitude, double longitude)
código não simplifica realmente o código, pois não vejo problema em simplesmente chamá moveCameraTo(new LatLng(latitude, longitude));
-lo. Este método também cheira a obsessão primitiva.
Isso void moveCameraTo(Location location)
poderia ser melhor resolvido provando Location.ToLatLng()
método e chamando moveCameraTo(location.ToLatLng())
.
se fosse C # e se esses métodos fossem realmente necessários, eu os preferiria como métodos de extensão em vez de métodos de instância. O uso de métodos de extensão se tornaria realmente óbvio se você tentasse abstrair e testar a unidade nesta instância. Como seria muito mais fácil falsificar um método único, em vez de várias sobrecargas com conversões simples.
Penso que desta maneira elimino a responsabilidade de saber o que é um LatLng em outra classe, por exemplo.
Não vejo razão para que isso seja um problema. Desde que seu código faça referência a classe que contém void moveCameraTo(LatLng latLng)
, ainda depende indiretamente LatLng
. Mesmo que essa classe nunca seja diretamente instanciada.
E você não precisa preparar os dados antes de chamar a função.
Eu não entendo o que você quer dizer. Se isso significa criar uma nova instância ou transformar classes de uma para outra, não vejo problema nisso.
Pensando nisso, sinto que o que estou dizendo também é suportado pelo design de API do próprio .NET. Historicamente, muitas classes do .NET seguiam a abordagem de sobrecargas com parâmetros diferentes e conversões simples. Mas isso foi antes da existência de métodos de extensão. As classes .NET mais modernas são mais leves em suas próprias APIs e, se houver algum método com sobrecarga de parâmetro, elas serão fornecidas como métodos de extensão. Exemplo mais antigo é o NLog ILogger, que possui dezenas de sobrecargas para gravar no log. Compare isso com o Microsoft.Extensions.Logging.ILogger mais recente que possui um total de 3 métodos (e apenas 1 se você contar o próprio log). Mas existem muitos ajudantes e várias parametrizações como métodos de extensão .
Penso que esta resposta mostra que algumas línguas teriam ferramentas para tornar o design mais agradável. Eu não sei muito sobre Java, então não tenho certeza se haveria algum equivalente. Mas mesmo usando métodos estáticos simples pode ser uma opção.