Sto creando una libreria matematica che gestirà i punti come input di funzione (come mostrato di seguito).
public struct Point { public int X; public int Y; }
public static class MyLib
{
public static float CalculateSomething(Point point1, Point point2)
{ ... }
...
}
Il mio piano è di essere in grado di usarlo insieme a varie librerie grafiche / di gioco e come tale che richiederà la trasformazione da qualunque tipo di Point sia dalla libreria grafica a quella fornita dalla mia libreria prima che possa essere utilizzata.
L'utilizzo di una struttura Point (o classe nella versione Java) come Oggetto parametro , che sarebbe accoppiamento parametro oggetto è un modo pulito e piacevole per semplificare sapere cosa passare ma richiede anche di mapparlo alla mia struttura / oggetto Point prima di ogni chiamata di funzione:
var mappedPoint1 = new Point(point1.x, point1.y);
var mappedPoint2 = new Point(point2.x, point2.y);
var result = MyLib.CalculateSomething(mappedPoint1, mappedPoint2);
Un'alternativa potrebbe essere l'utilizzo di un accoppiamento di parametri di dati semplici in cui solo i tipi primitivi vengono passati come parametri:
var result = MyLib.CalculateSomething(point1.x, point1.y, point2.x, point2.y);
Posso anche vedere pro / contro per questo approccio poiché non richiede il mapping a un oggetto dati ma ha problemi se compromettono l'ordine dei tipi primitivi passati. O se sono necessari più parametri, comincerebbe a diventare una grande lista di parametri.
Che tipo di accoppiamento qui sarà il meno oneroso sul codice di chiamata? Mentre i parametri primitivi sono i più semplici da interfacciare con il punto, l'astrazione porta chiarezza e contesto, ma richiede anche più lavoro e codice di mappatura.