একটি সাম্প্রতিক প্রকল্পের সময় আমি কাজ করছি, আমাকে এরকম দেখতে বেশ কয়েকটি ফাংশন ব্যবহার করতে হয়েছিল:
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
তবে, আমি দেখেছি বেশিরভাগ সি ++ কোডে প্রচুর আদিম ধরণের ব্যবহার করা হয়েছে এবং আমি ধারণা করেছি যে এর অবশ্যই একটি ভাল কারণ থাকতে হবে। কোনও কিছুর জন্য অবজেক্ট ব্যবহার করা কি ভাল ধারণা, বা এর কি ডাউনসাইড রয়েছে যা আমি অবগত নই?