हाल ही में एक परियोजना के दौरान मैं जिस पर काम कर रहा था, मुझे उस तरह के बहुत सारे कार्यों का उपयोग करना पड़ा:
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वस्तु जहां अपेक्षित थी, वहां से गुजरना असंभव होगा , इसलिए किसी फ़ंक्शन को गलत तर्क प्रदान करना अधिक कठिन होगा - इसी तरह, कुछ गैरकानूनी कार्यों के कारण संकलन त्रुटियाँ हो सकती हैं, जैसे कि
GPSCoordinateएकZoomLevelया दूसरे को जोड़नाGPSCoordinate - कानूनी कार्यों का प्रतिनिधित्व करना और टाइप करना आसान होगा। दो घटाना यानी
GPSCoordinateएक उपज होगाGPSDisplacement
हालाँकि, अधिकांश C ++ कोड मैंने देखा है कि बहुत से आदिम प्रकार का उपयोग करता है, और मुझे लगता है कि इसके लिए एक अच्छा कारण होना चाहिए। क्या किसी भी चीज़ के लिए वस्तुओं का उपयोग करना एक अच्छा विचार है, या क्या यह डाउनसाइड है कि मुझे जानकारी नहीं है?