আমি সম্প্রতি কয়েকটি হেল্পার স্টাইলের "ইউটিলিটি ব্যাগ" স্ট্যাটিক ক্লাসগুলি পর্যালোচনা করছিলাম যেখানে আমি কাজ করি এমন কয়েকটি বৃহত সি # কোডবাসের চারপাশে ভাসমান, মূলত নিম্নলিখিত খুব ঘনীভূত স্নিপেটের মতো জিনিসগুলি:
// Helpers.cs
public static class Helpers
{
public static void DoSomething() {}
public static void DoSomethingElse() {}
}
নির্দিষ্ট পর্যালোচনাগুলি আমি পর্যালোচনা করেছি
- বেশিরভাগই একে অপরের সাথে সম্পর্কিত নয়,
- আমন্ত্রণগুলি জুড়ে স্পষ্ট রাষ্ট্র ছাড়া,
- ছোট, এবং
- প্রতিটি অপ্রাসঙ্গিক প্রকারের দ্বারা গ্রাস করা হয়।
সম্পাদনা করুন: উপরোক্ত অভিযোগযুক্ত সমস্যার তালিকা হতে পারে না। আমি যে নির্দিষ্ট পদ্ধতিগুলি পর্যালোচনা করছি তার সাধারণ বৈশিষ্ট্যের একটি তালিকা। উত্তরের আরও প্রাসঙ্গিক সমাধান সরবরাহে সহায়তা করার প্রসঙ্গ এটি।
এই প্রশ্নের জন্য, আমি এই ধরণের পদ্ধতিটিকে GLUM (সাধারণ লাইটওয়েট ইউটিলিটি পদ্ধতি) হিসাবে উল্লেখ করব। "গ্লাম" এর নেতিবাচক ধারণাটি আংশিকভাবে উদ্দিষ্ট। আমি যদি এটি একটি বোবা শ্লেষ হিসাবে আসে।
এমনকি GLUMs সম্পর্কে আমার নিজস্ব ডিফল্ট সংশয়কে একপাশে রেখেও, আমি এই সম্পর্কে নিম্নলিখিত বিষয়গুলি পছন্দ করি না:
- একটি স্থির শ্রেণি পুরোপুরি নামস্থান হিসাবে ব্যবহৃত হচ্ছে।
- স্ট্যাটিক ক্লাস শনাক্তকারী মূলত অর্থহীন।
- যখন একটি নতুন জিএলএম যুক্ত হয়, হয় (ক) এই "ব্যাগ" শ্রেণিটি অকারণে স্পর্শ করে বা (খ) একটি নতুন "ব্যাগ" শ্রেণি তৈরি হয় (যা নিজেই সাধারণত কোনও সমস্যা নয়; খারাপটি কী নতুনটি হয়) অবিচলিত ক্লাসগুলি প্রায়শই কেবল সম্পর্কিত না হওয়া সমস্যার পুনরাবৃত্তি করে তবে কয়েকটি পদ্ধতিতে)।
- মেটা-নামকরণ, অনেকটা সে-কারণেই ভয়াবহ, অ-মানক, এবং সাধারণত অভ্যন্তরীণভাবে সঙ্গতিহীন কিনা এটা
Helpers,Utilitiesঅথবা যা খুশি।
এটিকে রিফ্যাক্টর করার পক্ষে যুক্তিসঙ্গতভাবে ভাল এবং সাধারণ প্যাটার্নটি কী, সর্বোপরি উপরের উদ্বেগগুলি সমাধান করার জন্য এবং যথাসম্ভব হালকা স্পর্শের সাথে সম্ভব?
আমার সম্ভবত জোর দেওয়া উচিত: আমি যে সমস্ত পদ্ধতির সাথে व्यवहार করছি সেগুলি একে অপরের সাথে যুগলভাবে সম্পর্কযুক্ত। এগুলি নিখরচায়িত দানাযুক্ত এখনও বহু সদস্যের স্ট্যাটিক শ্রেণির পদ্ধতি ব্যাগগুলিতে ভাঙ্গার কোনও যুক্তিসঙ্গত উপায় বলে মনে হচ্ছে না।
