নামের স্থান এবং এর অভ্যন্তরের শ্রেণীর জন্য একই নাম ব্যবহার করা সমস্যাযুক্ত।
যদি নেমস্পেসে একাধিক শ্রেণি থাকে তবে অন্য শ্রেণি কেন সেখানে রাখা হবে? এটি ঠিক মনে হচ্ছে না, কারণ নামের স্থানটির লক্ষ্যটি কেবল একটি নয়, এর মধ্যে থাকা সমস্ত শ্রেণীর বর্ণনা করা । উদাহরণস্বরূপ, আপনি আছে যদি JsonSerialization
, BinarySerialization
এবং XmlSerialization
একটি নামস্থানে ক্লাস, এটা জ্ঞান আপনার নামস্থান নাম হবে XmlSerialization
?
সাধারণত যা ঘটে থাকে তা হ'ল অস্তিত্ববান নেমস্পেস থেকে কোনও শ্রেণি উত্তোলনের কারণে, বা একাধিক ক্লাস বা অন্যান্য পুনর্গঠনের মধ্যে একত্রীকরণের কারণে আপনি নিজেকে একটি প্রধান শ্রেণিযুক্ত নেমস্পেসের সাথে খুঁজে পান ; প্রগতিশীলভাবে, নাবালক শ্রেণিগুলিকে সেখানে রাখা হয় কারণ তারা মূল শ্রেণীর সাথে কিছুটা সম্পর্কিত। উদাহরণস্বরূপ, একটি নেমস্পেসে LogParser
একটি একক শ্রেণী থাকতে পারে LogParser
এবং তারপরে কেউ রাখে LogConverter
, কারণ এটি পার্সারের সাথে সম্পর্কিত, তারপরে LogSearcher
, ইত্যাদি here এখানে সমস্যা হ'ল নেমস্পেসের নামটি পরিবর্তন করা হয়নি: LogConverter
যুক্ত হওয়ার সাথে সাথে, নাম পরিবর্তন করা উচিত ছিল LogsProcessing
বা, সহজভাবে Logs
,।
যদি নেমস্পেসে কেবল একটি ক্লাস থাকে তবে কোড সংস্থার মধ্যে এটি কোনও সমস্যার লক্ষণ হতে পারে।
যদিও আমি কয়েকবার পরিস্থিতিগুলি দেখেছি যেখানে সঠিক সলাইড নীতি সহ একটি একক শ্রেণি কোড বেসের অন্য কোনও কিছুর থেকে খুব আলাদা ছিল এবং তাই একটি উত্সর্গীকৃত নেমস্পেসে রাখা হয়েছিল, এই ধরনের ঘটনা বিরল। প্রায়শই এটি একটি সমস্যার পরিচায়ক। একইভাবে, কোনও কিছুই আপনাকে একক পদ্ধতিযুক্ত ক্লাস করতে বাধা দেয় না, তবে প্রায়শই না করা, এই জাতীয় ক্লাসগুলি একটি সমস্যা নির্দেশ করে।
এমনকি যদি আপনার নেমস্পেসে কেবল একটি শ্রেণি থাকে তবে সাধারণত শ্রেণীর নামকরণের সময় আরও নির্দিষ্ট হওয়ার একটি উপায় থাকে এবং নাম স্থানের নামকরণ করার সময় আরও সাধারণ। এমন একটি অ্যাপ্লিকেশনটি কল্পনা করুন যা অন্যান্য জিনিসের মধ্যে একটি নির্দিষ্ট মুহুর্তে এবিসি ফর্ম্যাটে লেখা ফাইলগুলিকে ডিএইফ ফর্ম্যাটে রূপান্তর করে should রূপান্তরটির জন্য ব্যবসায়িক সামগ্রীগুলিতে / থেকে কোনও ডিসিশ্রালাইজেশন / সিরিয়ালাইজেশন প্রয়োজন হয় না এবং নিয়মিত প্রকাশের একগুচ্ছ প্রয়োগ করে সম্পন্ন করা হয় যা রূপান্তর শ্রেণীর মধ্যেই বলা যায় যা যথেষ্ট সংক্ষিপ্ত।AbcToDefConverter
। সমস্ত রূপান্তর যুক্তি প্রায় দশটি আন্তঃনির্ভরশীল পদ্ধতিতে প্রায় 80 এলএলপি লাগে - এমন একটি পরিস্থিতির মতো মনে হয় যেখানে বিদ্যমান শ্রেণিকে বিভক্ত করার বা অতিরিক্ত শ্রেণি তৈরি করার একেবারেই প্রয়োজন নেই। যেহেতু অ্যাপ্লিকেশনের বাকী অংশটি রূপান্তরগুলির সাথে কোনও সম্পর্কযুক্ত না তাই অস্তিত্বের নামের জায়গাগুলিতে অন্যান্য শ্রেণীর সাথে শ্রেণিকৃত করা যায় না। সুতরাং এক নামে একটি নেমস্পেস তৈরি করে AbcToDefConverter
। যদিও এতে অন্তর্নিহিত কোনও ভুল নেই, তবে কেউ আরও জেনেরিক নাম ব্যবহার করতে পারে, যেমন Converters
। পাইথনের মতো ভাষাগুলিতে যেখানে সংক্ষিপ্ত নামগুলি অগ্রাধিকার দেওয়া হয় এবং পুনরাবৃত্তি দেওয়া হয়, এটি এমনকি হয়ে উঠতে পারে converters.Abc_To_Def
।
অতএব, তারা অন্তর্ভুক্ত ক্লাসগুলির চেয়ে নেমস্পেসের জন্য আলাদা আলাদা নাম ব্যবহার করুন। শ্রেণীর নামটি ক্লাসটি কী করছে তা নির্দেশ করা উচিত, যখন নেমস্পেসের নামটি এর মধ্যে রাখা সমস্ত শ্রেণীর মধ্যে কী সাধারণ তা হাইলাইট করা উচিত।
যাইহোক, ইউটিলিটি ক্লাসগুলি প্রকৃতির দ্বারা ভুল: নির্দিষ্ট কিছু নির্দিষ্ট সংখ্যক, যেমন স্বেচ্ছাচারিত নির্ভুলতা পাটিগণিতের পরিবর্তে, তারা বরং এমন সব কিছু ধারণ করে যা অন্য শ্রেণিতে তার উপায় খুঁজে পায় না । এটি কেবলমাত্র নামকরণ যেমন Miscellaneous
ডেস্কটপে ডিরেক্টরি হিসাবে — এমন কিছু যা প্রতিষ্ঠানের অভাবের ইঙ্গিত দেয় simply
নামকরণ একটি কারণে বিদ্যমান: যখন আপনার পরে জিনিসপত্রের সন্ধান করা প্রয়োজন তখন আপনার জীবনকে আরও সহজ করে তুলতে। আপনি জানেন যে আপনার যদি কোনও চার্ট আঁকার দরকার হয় তবে আপনি "চার্ট" বা "প্লট" অনুসন্ধান করার চেষ্টা করতে পারেন। যখন কোনও অ্যাপ্লিকেশন চালানের উত্স তৈরি করার উপায়টি পরিবর্তন করতে হবে তখন আপনি "চাল্য [ই / আইএন]" বা "বিল" সন্ধান করবেন। একইভাবে, এমন কোনও ক্ষেত্রে কল্পনা করার চেষ্টা করুন যেখানে আপনি নিজেকে বলে থাকবেন: "এইচএম, সম্ভবত এই বৈশিষ্ট্যটি মিসকে খুঁজে পাওয়া উচিত" ” পারছি না।
.NET ফ্রেমওয়ার্ক দেখুন। এই ক্লাসগুলির বেশিরভাগ কি ইউটিলিটি ক্লাস নয়? মানে, ব্যবসায়ের ডোমেনের সাথে তাদের কিছু করার আছে। আমি যদি কোনও আর্থিক অ্যাপ্লিকেশন, বা একটি ই-বাণিজ্য ওয়েবসাইট, বা পরবর্তী জেন শিক্ষার প্ল্যাটফর্মে কাজ করি, এক্সএমএলকে সিরিয়ালাইজ করা বা ফাইলগুলি পড়া বা এসকিউএল কোয়েরিগুলি করা বা লেনদেন করা সমস্ত ইউটিলিটি স্টাফ। যাইহোক, তাদের বলা হয় না UtilitySerialization
বা UtilityTransaction
, এবং তারা Utility
নেমস্পেসে নেই। তাদের যথাযথ নাম রয়েছে, যা আমার যখন প্রয়োজন হয় তখন তাদের সন্ধান করা (এবং সহজ, ধন্যবাদ। নেট বিকাশকারীদের!) সম্ভব করে তোলে।
আপনার ক্লাসগুলির জন্য একই জিনিস আপনি সাধারণত আপনার অ্যাপ্লিকেশনগুলিতে পুনরায় ব্যবহার করেন। এগুলি ইউটিলিটি ক্লাস নয়। তারা ক্লাস যা কিছু নির্দিষ্ট কাজ করে এবং তাদের যে জিনিসগুলি করা হয় সেগুলি ক্লাসের নাম হওয়া উচিত।
কল্পনা করুন আপনি এমন কিছু কোড তৈরি করেছেন যা ইউনিট এবং ইউনিট রূপান্তর নিয়ে কাজ করে। আপনি এটির নাম রাখতে পারেন Utility
এবং আপনার সহকর্মীরা তাকে ঘৃণা করতে পারে; অথবা আপনি এটি নাম দিতে পারেন Units
এবং UnitsConversion
।