在我最近从事的项目中,我不得不使用很多看起来像这样的函数:
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);
所以我想重构它看起来像这样:
static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D gimbalAngle,
PixelCoordinate target, ZoomLevel zoom, PixelSize imageSize)
在我看来,这比第一种方法更具可读性和安全性。但是创建PixelCoordinate
和PixelSize
分类有意义吗?还是我最好只使用std::pair<int,int>
每个。上一ZoomLevel
堂课有意义double
吗,还是我应该只使用一个?
我对所有内容都使用类的背后的直觉是基于以下假设:
- 如果所有内容都有类,则不可能
ZoomLevel
在Weight
期望对象的地方传递,因此为函数提供错误的参数会更加困难 - 同样,某些非法操作也会导致编译错误,例如将a添加
GPSCoordinate
到aZoomLevel
或另一个GPSCoordinate
- 合法操作将易于表示且类型安全。即减去两个
GPSCoordinate
s将产生一个GPSDisplacement
但是,我见过的大多数C ++代码都使用很多原始类型,我想一定有充分的理由。将对象用于任何事物是个好主意,还是有我不知道的缺点?