Il n'y a rien de particulièrement mal avec votre solution.
Mais ma préférence personnelle serait que ces méthodes ne soient pas si utiles. Et compliquez simplement l'interface de tout objet dont ils font partie.
Le void moveCameraTo(double latitude, double longitude)
ne simplifie pas vraiment le code, car je ne vois aucun problème appelant simplement moveCameraTo(new LatLng(latitude, longitude));
à sa place. Cette méthode sent aussi l'obsession primitive.
Le void moveCameraTo(Location location)
pourrait être mieux résolu en prouvant la Location.ToLatLng()
méthode et en appelant moveCameraTo(location.ToLatLng())
.
si c'était C # et si de telles méthodes étaient vraiment nécessaires, je les préférerais comme méthodes d'extension au lieu de méthodes d'instance. L'utilisation de méthodes d'extension deviendrait vraiment évidente si vous essayiez l'abstrait et testiez unitaire cette instance. Comme il serait beaucoup plus facile de simuler une seule méthode au lieu de plusieurs surcharges avec des conversions simples.
Je pense qu'avec cette façon, j'élimine la responsabilité de savoir ce qu'est un LatLng dans une autre classe, par exemple.
Je ne vois aucune raison pour laquelle ce serait un problème. Tant que votre code référence la classe qui contient void moveCameraTo(LatLng latLng)
, cela dépend toujours indirectement LatLng
. Même si cette classe n'est jamais directement instanciée.
Et vous n'avez pas besoin de préparer les données avant d'appeler la fonction.
Je ne comprends pas ce que tu veux dire. Si cela signifie créer une nouvelle instance ou transformer des classes les unes des autres, je n'y vois aucun problème.
En y réfléchissant, je pense que ce que je dis est également pris en charge par la conception API de .NET lui-même. Historiquement, de nombreuses classes .NET ont suivi votre approche consistant à avoir de nombreuses surcharges avec différents paramètres et de simples conversions à l'intérieur. Mais c'était avant que les méthodes d'extension n'existent. Les classes .NET plus modernes sont plus légères dans leurs propres API et s'il existe des méthodes avec des surcharges de paramètres, elles sont fournies en tant que méthodes d'extension. Un exemple plus ancien est NLog ILogger qui a des dizaines de surcharges pour l'écriture dans le journal. Comparez cela aux nouveaux Microsoft.Extensions.Logging.ILogger qui ont un total de 3 méthodes (et seulement 1 si vous comptez vous connecter). Mais il existe de nombreux assistants et diverses paramétrisations comme méthodes d'extension .
Je pense que cette réponse montre que certaines langues auraient des outils pour rendre le design comme celui-ci plus agréable. Je ne connais pas beaucoup Java, donc je ne sais pas s'il y aurait un équivalent. Mais même l'utilisation de méthodes statiques simples peut être une option.