IComparable
শুধুমাত্র একটি উপায় কাজ করে
ধরা যাক আপনার একটা Employee
ক্লাস আছে। এক দর্শনে, আপনি Employees
নাম অনুসারে বাছাই করা - অন্যটিতে, ঠিকানার মাধ্যমে দেখতে চান। আপনি কিভাবে এটি অর্জন করতে যাচ্ছেন? সাথে নয় IComparable
, কমপক্ষে কোনও অহঙ্কারী পদ্ধতিতে নয়।
IComparable
ভুল জায়গায় যুক্তি আছে
ইন্টারফেস কল করে ব্যবহার করা হয় .Sort()
। Customer
নাম অনুসারে বাছাই করা একটি দৃশ্যে , কীভাবে এটি বাছাই হচ্ছে তা বোঝাতে কোনও কোড নেই।
অন্যদিকে, Customer
বর্গটি এটি কীভাবে ব্যবহার করা হচ্ছে তা ধরে নিচ্ছে - এই ক্ষেত্রে, এটি নাম অনুসারে বাছাই করা একটি তালিকায় ব্যবহৃত হবে।
IComparable
স্পষ্টভাবে ব্যবহৃত হয়
বিকল্পগুলির সাথে তুলনা করে, তুলনা করার যুক্তিটি কোথায় ব্যবহৃত হচ্ছে - বা তা আদৌ দেখা খুব কঠিন। আপনার মানক আইডিই ধরে এবং Customer
ক্লাস থেকে শুরু করে , আমাকে করতে হবে
- সমস্ত রেফারেন্স অনুসন্ধান করুন
Customer
- একটি তালিকাতে ব্যবহৃত রেফারেন্সগুলি সন্ধান করুন
- Lists তালিকাগুলি সেগুলি কখনও কল করেছে কিনা তা পরীক্ষা
.Sort()
করুন
সম্ভবত সবচেয়ে খারাপটি, যদি আপনি এমন একটি IComparable
বাস্তবায়ন ব্যবহার করেন যা এখনও ব্যবহৃত হচ্ছে, আপনি কোনও ত্রুটি বা সতর্কতা পাবেন না। আপনি যে জায়গাগুলি ভেবেছিলেন তা অস্পষ্ট এমন সব জায়গায় ভুল আচরণই আপনি পাবেন।
এই সমস্যাগুলি সম্মিলিত, সাথে সাথে প্রয়োজনীয় পরিবর্তনগুলি
আমি এটি সম্পর্কে চিন্তাভাবনা করতে এসেছিলাম কারণ এটি আমার পক্ষে ভুল হয়ে গেছে। আমি IComparable
এখন 2 বছর ধরে আমার অ্যাপ্লিকেশনটিতে সুখে ব্যবহার করছি। এখন, প্রয়োজনীয়তা পরিবর্তন হয়েছে এবং জিনিসটি 2 টি বিভিন্ন উপায়ে বাছাই করা দরকার। এটি লক্ষ্য করা গেছে যে পূর্ববর্তী বিভাগে বর্ণিত পদক্ষেপগুলির মধ্য দিয়ে যাওয়া কোনও মজাদার নয়।
প্রশ্নটি
এই সমস্যাগুলি আমাকে IComparable
নিম্নমানের IComparer
বা তার চেয়ে কম বিকল্প হিসাবে ভাবতে .OrderBy()
বাধ্য করে, এমন কোনও বৈধ ব্যবহারের কেস না দেখে যা বিকল্পগুলির দ্বারা আরও ভালভাবে পরিবেশন করা যায় না। লিনকিউ
ব্যবহার করা কি সর্বদা ভাল IComparer
, বা এখানে সুবিধাগুলি / ব্যবহারের মামলাগুলি আমি দেখছি না?
IComparable
আর ব্যবহার করবেন না, যা আমার বক্তব্যকে শক্তিশালী করছে।
SortedXXX
সংগ্রহগুলি, তারা হয় সঞ্চিত উপাদানের প্রয়োজন হতে IComparable
বা আছে IComparer
প্রদান করা হয়েছে। এছাড়াও মনে রাখবেন যে, কোনও তুলনাকারীর সাথে প্রাকৃতিক সাজানোর ক্রমটিকে বিপরীত করা এবং এটি সমস্ত IComparable
বস্তুর সাথে কাজ করা তুচ্ছ ।
IComparable
বিবেচনা করা হয় । আপনি যখন ডিফল্ট তুলনা প্রক্রিয়া ওভাররাইড করতে চান তখন ব্যবহৃত হয়। IComparer
ReverseComparer<T>
: gist.github.com/jackfarrington/078e7af7bc82482aa634