আমাদের জ্ঞানের ডোমেনটিতে লোকেদের খালি পায়ে একটি চাপ-রেকর্ডিং প্লেট ধরে হাঁটা জড়িত। কোনও চিত্রের সেন্সর ডেটাতে স্বীকৃতি পেলে আমরা 'চিত্র' শ্রেণীর অবজেক্টগুলির ফলাফল হিসাবে আমরা চিত্র স্বীকৃতিটি করি।
বেশ কয়েকটি গণনা রয়েছে যা অবশ্যই পায়ের ডেটাতে সম্পাদন করা উচিত।
এখন, কোন এপিআই ভাল হবে:
class Foot : public RecognizedObject {
MaxPressureFrame getMaxPressureFrame();
FootAxis getFootAxis();
AnatomicalZones getAnatomicalZones();
// + similar getters for other calculations
// ...
}
বা:
class Foot : public RecognizedObject {
virtual CalculationBase getCalculation(QString aName);
// ...
}
এখন, আমি অনেকগুলি প্রো এবং কন এর সাথে আসতে পারি, তবে কোনটি সবচেয়ে গুরুত্বপূর্ণ তা আমি সত্যিই সিদ্ধান্ত নিতে পারি না। দ্রষ্টব্য, এটি একটি শেষ ব্যবহারকারী অ্যাপ্লিকেশন, আমরা বিক্রি করি এমন কোনও সফ্টওয়্যার লাইব্রেরি নয়।
কোন পরামর্শ?
প্রথম পদ্ধতির জন্য কিছু প্রো এর হতে পারে:
- KISS - সবকিছু খুব কংক্রিট। এপিআই, তবে বাস্তবায়নও।
- শক্তভাবে টাইপ করা রিটার্ন মান।
- এই শ্রেণি থেকে উত্তরাধিকার বোকামি-প্রমাণ। কোনও কিছুই ওভাররাইড করা যায় না, কেবল যুক্ত করা হয়।
- এপিআই খুব বন্ধ, কিছুই ভিতরে যায় না, কিছুই ওভাররাইড করা যায় না, তাই কম ভুল হতে পারে।
কিছু কন এর:
- আমাদের উদ্ভাবিত প্রতিটি নতুন গণনা তালিকার সাথে যুক্ত হওয়ার সাথে সাথে গেটের সংখ্যা বৃদ্ধি পাবে
- এপিআই পরিবর্তন হওয়ার সম্ভাবনা বেশি এবং যদি ব্রেকিং পরিবর্তনগুলি চালু করা হয় তবে আমাদের একটি নতুন এপিআই সংস্করণ, একটি ফুট 2 দরকার।
- অন্যান্য প্রকল্পে ক্লাসটি পুনরায় ব্যবহারের ক্ষেত্রে আমাদের প্রতিটি গণনার প্রয়োজন হবে না
কিছু সমর্থক দ্বিতীয় পদ্ধতির জন্য:
- আরো নমনীয়
- এপিআই পরিবর্তনের সম্ভাবনা কম, (ধরে নিই আমরা বিমূর্তিটি সঠিকভাবে ধরেছি, যদি না হয় তবে পরিবর্তনের জন্য আরও বেশি ব্যয় হবে)
কিছু কন এর:
- আলগাভাবে টাইপ করা। প্রতিটি কলে কল প্রয়োজন।
- স্ট্রিং প্যারামিটার - সে সম্পর্কে আমার খারাপ অনুভূতি আছে (স্ট্রিংয়ের মানগুলিতে ব্রাঞ্চিং ...)
- কোনও অতিরিক্ত ব্যবহারের কেস / প্রয়োজনীয়তা নেই যা অতিরিক্ত নমনীয়তার বাধ্যতামূলক করে, তবে ভবিষ্যতেও হতে পারে।
- এপিআই বিধিনিষেধ আরোপ করে: প্রতিটি গণনা একটি বেস শ্রেণীর থেকে নেওয়া উচিত। একটি গণনা পাওয়া এই 1 টি পদ্ধতির মাধ্যমে বাধ্য করা হবে এবং অতিরিক্ত পরামিতিগুলি পাস করা অসম্ভব হবে, যদি না আমরা প্যারামিটারগুলি আরও বেশি গতিশীল, অতি-নমনীয় পদ্ধতি অবলম্বন করি যা জটিলতা আরও বেশি করে তোলে।
getCalculation()
।
enum
এবং এর মানগুলি স্যুইচ করতে পারেন। তবুও, আমি মনে করি দ্বিতীয় বিকল্পটি খারাপ, কারণ এটি কেআইএসএস থেকে বিচ্যুত হয়।