在我最近从事的项目中,我不得不使用很多看起来像这样的函数:
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 - 合法操作将易于表示且类型安全。即减去两个
GPSCoordinates将产生一个GPSDisplacement 
但是,我见过的大多数C ++代码都使用很多原始类型,我想一定有充分的理由。将对象用于任何事物是个好主意,还是有我不知道的缺点?