No hay nada particularmente malo con su solución.
Pero mi preferencia personal sería que esos métodos no sean tan útiles. Y simplemente complique la interfaz de cualquier objeto del que formen parte.
El void moveCameraTo(double latitude, double longitude)
realmente no simplifica el código, ya que no veo ningún problema simplemente llamando moveCameraTo(new LatLng(latitude, longitude));
en su lugar. Este método también huele a obsesión primitiva.
El void moveCameraTo(Location location)
podría resolverse mejor probando el Location.ToLatLng()
método y llamando moveCameraTo(location.ToLatLng())
.
si esto fuera C # y si tales métodos fueran realmente necesarios, los preferiría como métodos de extensión en lugar de métodos de instancia. El uso de métodos de extensión se volvería realmente obvio si intentara abstraer y probar esta instancia de forma unitaria. Como sería mucho más fácil simplemente falsificar un método único en lugar de múltiples sobrecargas con conversiones simples.
Creo que de esta manera elimino la responsabilidad de saber qué es un LatLng en otra clase, por ejemplo.
No veo ninguna razón por la que esto sea un problema. Siempre que su código haga referencia a la clase que contiene void moveCameraTo(LatLng latLng)
, aún depende indirectamente de ella LatLng
. Incluso si esa clase nunca se instancia directamente.
Y no necesita preparar los datos antes de llamar a la función.
No entiendo lo que quieres decir. Si significa crear una nueva instancia o transformar clases de una a otra, no veo ningún problema con eso.
Pensando en ello, creo que lo que digo también es compatible con el diseño de API de .NET. Históricamente, muchas clases .NET siguieron su enfoque de tener muchas sobrecargas con diferentes parámetros y conversiones simples dentro. Pero eso fue antes de que existieran los métodos de extensión. Las clases .NET más modernas son más livianas en sus propias API y si hay algún método con sobrecarga de parámetros, se proporcionan como métodos de extensión. Un ejemplo más antiguo es NLog ILogger que tiene docenas de sobrecargas para escribir en el registro. Compare eso con las nuevas Microsoft.Extensions.Logging.ILogger que tiene un total de 3 métodos (y solo 1 si cuenta el registro en sí). Pero hay muchos ayudantes y varias parametrizaciones como métodos de extensión .
Creo que esta respuesta muestra que algunos idiomas tendrían herramientas para hacer un diseño como este más agradable. No conozco mucho Java, así que no estoy seguro de si habría algún equivalente. Pero incluso usar métodos estáticos simples podría ser una opción.