私が取り組んでいる最近のプロジェクトでは、次のような多くの関数を使用する必要がありました。
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
をZoomLevel
別のaGPSCoordinate
- 法的業務は表現しやすく、タイプセーフです。つまり、2を引く
GPSCoordinate
と、GPSDisplacement
しかし、私が見たほとんどのC ++コードは多くのプリミティブ型を使用しており、そのための十分な理由があるに違いないと思います。オブジェクトを何かに使用するのは良い考えですか、それとも私が知らない欠点がありますか?