Üzerinde çalıştığım yeni bir proje sırasında, şöyle görünen bir çok işlevi kullanmak zorunda kaldım:
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);
Bu yüzden böyle bir şey bakmak için refactor istiyorum:
static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D gimbalAngle,
PixelCoordinate target, ZoomLevel zoom, PixelSize imageSize)
Bu bana ilk yönteme göre önemli ölçüde daha okunaklı ve güvenli gözüküyor. Ama yaratmak PixelCoordinate
ve PixelSize
sınıflamak mantıklı mı? Yoksa sadece std::pair<int,int>
her biri için kullanmak daha iyi olurdu . Ve bir ZoomLevel
sınıfa sahip olmak anlamlı mı yoksa sadece a double
mı kullanmalıyım ?
Sınıfları her şey için kullanmanın ardındaki sezgilerim bu varsayımlara dayanıyor:
- Her şey için sınıflar varsa,
ZoomLevel
birWeight
nesnenin beklendiği yere geçmek imkansızdır , bu nedenle bir işleve yanlış argümanlar sağlamak daha zor olurdu - Benzer şekilde, bazı yasadışı işlemler,
GPSCoordinate
aZoomLevel
veya başka bir karaktere ekleme gibi derleme hatalarına neden olabilir.GPSCoordinate
- Yasal işlemlerin temsil edilmesi ve yazımı kolay olacaktır. yani iki saniyenin çıkarılması
GPSCoordinate
,GPSDisplacement
Ancak, gördüğüm çoğu C ++ kodu çok ilkel türleri kullanır ve bunun için iyi bir neden olması gerektiğini hayal ediyorum. Nesneleri herhangi bir şey için kullanmak iyi bir fikir mi, yoksa farkında olmadığım dezavantajları var mı?