Avrebbe senso usare gli oggetti (anziché i tipi primitivi) per tutto in C ++?
https://softwareengineering.stackexchange.com/questions/193218
-
06-11-2019 - |
Domanda
Durante un recente progetto a cui ho lavorato, ho dovuto usare molte funzioni che sembrano questo:
static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude,
double plane_roll, double plane_pitch, double plane_heading,
double gimbal_roll, double gimbal_pitch, double gimbal_yaw,
int target_x, int target_y, double zoom,
int image_width_pixels, int image_height_pixels,
double & Target_Latitude, double & Target_Longitude, double & Target_Height);
Quindi voglio refactorlo per assomigliare a questo:
static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D gimbalAngle,
PixelCoordinate target, ZoomLevel zoom, PixelSize imageSize)
Questo mi sembra significativamente più leggibile e sicuro del primo metodo. Ma ha senso creare PixelCoordinate
e PixelSize
classi? O starei meglio solo usando std::pair<int,int>
per ciascuno. E ha senso avere un ZoomLevel
classe, o dovrei solo usare un double
?
La mia intuizione dietro l'uso di classi per tutto si basa su questi presupposti:
- Se ci sono lezioni per tutto, sarebbe impossibile passare a
ZoomLevel
in dove aWeight
era previsto l'oggetto, quindi sarebbe più difficile fornire gli argomenti sbagliati a una funzione - Allo stesso modo, alcune operazioni illegali causerebbero errori di compilazione, come l'aggiunta di un
GPSCoordinate
a aZoomLevel
oppure un'altraGPSCoordinate
- Le operazioni legali saranno facili da rappresentare e tysafe. cioè sottrarre due
GPSCoordinate
s produrrebbe aGPSDisplacement
Tuttavia, la maggior parte del codice C ++ che ho visto usa molti tipi primitivi e immagino che ci debba essere una buona ragione per questo. È una buona idea usare gli oggetti per qualsiasi cosa, o ha aspetti negativi di cui non sono a conoscenza?
Nessuna soluzione corretta