최근에 작업 한 프로젝트에서 다음과 같은 많은 기능을 사용해야했습니다.
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
다른 사람에 추가하는 등의 컴파일 오류를 일으킬 수 있습니다.GPSCoordinate
- 합법적 인 작업은 표현하기 쉽고 타이프 안전합니다. 즉, 두
GPSCoordinate
s를 빼면GPSDisplacement
그러나 내가 본 대부분의 C ++ 코드는 많은 기본 유형을 사용하며 그 이유가 있어야한다고 생각합니다. 무언가를 위해 객체를 사용하는 것이 좋습니까, 아니면 내가 모르는 단점이 있습니까?