না।
আমি একক (আমি) এবং বিকাশকারীদের একটি দল উভয়ই ছোট এবং বড় প্রকল্পে উভয় পদ্ধতি চেষ্টা করেছি tried
আমি খুঁজে পেয়েছি যে সবচেয়ে সহজ এবং সর্বাধিক উত্পাদনশীল রুটটি ছিল প্রতি প্রকল্পের জন্য একটি একক নেমস্পেস এবং সমস্ত শ্রেণি name নামস্থানে চলে। তারপরে আপনি যে কোনও প্রকল্পের ফোল্ডারগুলিতে যা চান ক্লাস ফাইলগুলি ফ্রি করতে পারেন। কেবলমাত্র একটি একক নেমস্পেস থাকায় সারাক্ষণ ফাইলগুলির শীর্ষে স্টেটমেন্টগুলি যুক্ত করার বিষয়ে কোনও গোলযোগ নেই।
ফোল্ডারগুলিতে উত্স ফাইলগুলি সংগঠিত করা গুরুত্বপূর্ণ এবং আমার মতে যে সমস্ত ফোল্ডারটি ব্যবহার করা উচিত। এই ফোল্ডারগুলিও নেমস্পেসে মানচিত্রের প্রয়োজনীয়তা অপ্রয়োজনীয়, আরও কাজ তৈরি করে, এবং আমি খুঁজে পেলাম যে সংস্থার পক্ষে আসলেই ক্ষতিকারক কারণ যুক্ত হওয়া বোঝাটি বিভাজনকে উত্সাহ দেয়।
উদাহরণস্বরূপ এই FxCop সতর্কতা নিন:
CA1020: কয়েকটি ধরণের
কারণ সহ নেমস্পেসগুলি এড়িয়ে চলুন : গ্লোবাল নেমস্পেস বাদে অন্য একটি নেমস্পেসে পাঁচ ধরণের চেয়ে কম
https://msdn.microsoft.com/en-gb/library/ms182130.aspx রয়েছে
এই সতর্কতাটি জেনেরিক প্রজেক্টে নতুন ফাইলগুলির ডাম্পিংকে উত্সাহ দেয় ene জেনারাল ফোল্ডার, এমনকি প্রজেক্টের রুট পর্যন্ত আপনার চারটি ক্লাস না হওয়া পর্যন্ত একটি নতুন ফোল্ডার তৈরি সমর্থনযোগ্য। তা কি কখনও ঘটবে?
ফাইলগুলি সন্ধান করা হচ্ছে
গৃহীত উত্তরটি বলে "ক্লাসগুলি সন্ধান করা আরও সহজ হবে এবং এটি একা যথেষ্ট কারণ হতে হবে।"
আমার সন্দেহ হয় যে উত্তরটি কোনও প্রকল্পে একাধিক নেমস্পেস থাকার কথা উল্লেখ করছে যা ফোল্ডার কাঠামোর মানচিত্র রাখে না, আমি যা প্রস্তাব দিচ্ছি তার চেয়ে একক নেমস্পেসের সাথে একটি প্রকল্প।
নাম স্থান থেকে কোনও শ্রেণীর ফাইল কোন ফোল্ডারে রয়েছে তা আপনি নির্ধারণ করতে না পারার ক্ষেত্রে, আপনি Go To Definition বা ভিজ্যুয়াল স্টুডিওতে অনুসন্ধান সমাধান এক্সপ্লোরার বাক্স ব্যবহার করে এটি সন্ধান করতে পারেন। এছাড়াও এটি আমার মতে সত্যিই বড় সমস্যা নয়। আমি এটির অনুকূলীকরণের জন্য ফাইলগুলি খুঁজে পেতে সমস্যা করতে আমার বিকাশের সময়কালে 0.1% ব্যয় করি না।
নাম সংঘর্ষ
অবশ্যই একাধিক নেমস্পেস তৈরি করা প্রকল্পকে একই নামের সাথে দুটি ক্লাস করার অনুমতি দেয়। কিন্তু আসলেই কি এটি একটি ভাল জিনিস? কেবল সম্ভব হওয়া থেকে এড়িয়ে যাওয়া কি সহজ? একই নামে দুটি ক্লাসের অনুমতি দেওয়া আরও জটিল পরিস্থিতি তৈরি করে যেখানে 90% সময়ের জিনিস নির্দিষ্ট উপায়ে কাজ করে এবং তারপরে হঠাৎ করেই আপনি দেখতে পান যে আপনার একটি বিশেষ কেস রয়েছে। বলুন যে আপনি দুটি আয়তক্ষেত্রের ক্লাস পৃথক নেমস্পেসে সংজ্ঞায়িত করেছেন:
- বর্গ প্রকল্প 1.আমজ। আয়তক্ষেত্র
- বর্গ প্রকল্প 1. উইন্ডো। আয়তক্ষেত্র
কোনও উত্স ফাইলের উভয় নেমস্পেস অন্তর্ভুক্ত করা দরকার এমন কোনও সমস্যায় আঘাত করা সম্ভব। এখন আপনাকে সেই ফাইলের যে কোনও জায়গায় পুরো নেমস্পেসটি লিখতে হবে:
var rectangle = new Project1.Window.Rectangle();
বা কিছু বাজে ব্যবহারের বিবৃতি দিয়ে গোলমাল করুন:
using Rectangle = Project1.Window.Rectangle;
আপনার প্রকল্পের একক নেমস্পেসের সাথে আপনাকে আলাদা আলাদাভাবে আসতে বাধ্য করা হবে এবং আমি আরও বর্ণনামূলক, এই জাতীয় নাম যুক্তি দিয়ে যুক্তি দেব:
- বর্গ প্রকল্প 1
- বর্গ প্রকল্প 1. উইন্ডো আয়তক্ষেত্র
এবং ব্যবহার সর্বত্র একইরকম, যখন কোনও ফাইল উভয় প্রকারের ব্যবহার করে তখন আপনাকে কোনও বিশেষ ক্ষেত্রে মোকাবেলা করতে হবে না।
বিবৃতি ব্যবহার করে
using Project1.General;
using Project1.Image;
using Project1.Window;
using Project1.Window.Controls;
using Project1.Shapes;
using Project1.Input;
using Project1.Data;
বনাম
using Project1;
কোড লেখার সময় সর্বদা নেমস্পেস যুক্ত না করার স্বাচ্ছন্দ্য। এটি সত্যিকারের সময় লাগে না, এটি করার প্রবাহে বিরতি এবং কেবলমাত্র প্রচুর বিবৃতি দিয়ে ফাইলগুলি পূরণ করা - কীসের জন্য? এটা কি মূল্য?
প্রকল্পের ফোল্ডার কাঠামো পরিবর্তন করা হচ্ছে
যদি ফোল্ডারগুলি নেমস্পেসে ম্যাপ করা থাকে তবে প্রকল্প ফোল্ডারের পথটি প্রতিটি উত্স ফাইলে কার্যকরভাবে হার্ড-কোডড থাকে। এর অর্থ প্রকল্পের কোনও ফাইল বা ফোল্ডারের যেকোন নাম পরিবর্তন বা সরানোর জন্য প্রকৃত ফাইলের সামগ্রীগুলি পরিবর্তন করা দরকার। উভয়ই সেই ফোল্ডারে ফাইলের নামস্থান ঘোষণা এবং সেই ফোল্ডারে থাকা ক্লাসগুলিকে রেফারেন্স করে এমন অন্যান্য ফাইলের পুরো গোছায় বিবৃতি ব্যবহার করে। পরিবর্তনগুলি নিজেরাই টুলিংয়ের সাথে তুচ্ছ, যদিও এটির ফলাফল সাধারণত অনেকগুলি ফাইল সমন্বিত একটি বৃহত প্রতিশ্রুতিতে আসে যার ক্লাসগুলিও পরিবর্তন হয় নি।
প্রকল্পের একটি একক নেমস্পেসের সাহায্যে আপনি প্রকল্প ফোল্ডার কাঠামো পরিবর্তন করতে পারেন তবে আপনি কোনও উত্স ফাইলগুলি নিজেরাই সংশোধন না করেই চান।
ভিজ্যুয়াল স্টুডিওটি এটির মধ্যে নির্মিত প্রোজেক্ট ফোল্ডারে একটি নতুন ফাইলের নাম স্থানটি স্বয়ংক্রিয়ভাবে মানচিত্র করে
দুর্ভাগ্যজনক, তবে আমি খুঁজে পেয়েছি যে নাম স্থানটি সংশোধন করার ঝামেলা তাদের সাথে আচরণ করার ঝামেলার চেয়ে কম। এছাড়াও আমি অ্যাড-> নতুন ব্যবহার না করে একটি বিদ্যমান ফাইল কপি করার অভ্যাসে চলে এসেছি।
ইন্টেলিজেন্স এবং অবজেক্ট ব্রাউজার
বড় প্রকল্পগুলিতে একাধিক নেমস্পেসগুলি ব্যবহার করার বিষয়ে আমার মতে সবচেয়ে বড় সুবিধা হ'ল নামকরণ ক্ষেত্রের শ্রেণিবিন্যাসে ক্লাস প্রদর্শনকারী কোনও সরঞ্জামাদানের ক্লাসগুলি দেখার সময় অতিরিক্ত সংস্থাগুলি হচ্ছে। এমনকি ডকুমেন্টেশন। স্পষ্টতই প্রকল্পের ফলাফলগুলির মধ্যে কেবলমাত্র একটি নেমস্পেস থাকার ফলে বিভাগগুলিতে ভাঙার পরিবর্তে সমস্ত শ্রেণীর একক তালিকায় প্রদর্শিত হবে। তবে ব্যক্তিগতভাবে আমি এর অভাবের কারণে কখনও স্টাম্পড বা বিলম্বিত হইনি তাই একাধিক নেমস্পেসকে ন্যায়সঙ্গত করার পক্ষে এটি আমার পক্ষে যথেষ্ট বড় সুবিধা বলে মনে হয় না।
যদি আমি একটি বৃহৎ পাবলিক ক্লাস গ্রন্থাগার লেখা ছিল তারপর আমি যদিও হবে সম্ভবত প্রকল্পে একাধিক নামব্যবধান ব্যবহার যাতে সমাবেশ সাধনী দ্বারা প্রয়োগকরণ এবং ডকুমেন্টেশনে ঝরঝরে লাগছিল।