নেমস্পেস এবং শ্রেণি নামের নির্দেশিকা


15

ব্যবহারগুলি এবং অন্যান্য সহায়তা ক্লাস জড়িত থাকাকালীন আমার ক্লাস এবং পরিষেবাগুলিকে সঠিকভাবে নামকরণ করতে আমার সমস্যা হচ্ছে।

আপনি নিম্নলিখিতটি কীভাবে গঠন করবেন:

EventService.cs
EventServiceUtils.cs
EventServiceValidators.cs
EventServiceCoordinator.cs

ইত্যাদি ...

উপরের পরিষেবাটির মতো একই চাহিদা সহ আমার একাধিক পরিষেবা রয়েছে। একটি চিন্তাধারা হ'ল এগুলি সমস্তকে একটি উপযুক্ত নেমস্পেসে আলাদা করা, এটি এ জাতীয় কিছু দেখায়:

Services.EventService.EventService.cs //(the actual service)
Services.EventService.Validators.DateValidator.cs
Services.EventService.Validators.ParticipantValidator.cs
Services.EventService.Coordinators.ParticipantCoordinator.cs
Services.EventService.ExtensionMethods.Extensions.cs

ইত্যাদি। প্রতিটি নেমস্পেস অবশ্যই পৃথক ফোল্ডার। তবে এটি 100% বোধ করে না, যেহেতু DateValidatorsঅন্যান্য পরিষেবাদিতে সম্ভবত আরও কিছু রয়েছে, যা সহজেই একটি অযাচিত উল্লেখ করতে পারে।

এবং এর Services.EventService.EventService.csমধ্যে নেমস্পেসে শ্রেণীর নাম অন্তর্ভুক্ত রয়েছে, যা কোনও ভাল নয়। আপনি ব্যবহার করতে পারেন Services.Event.EventService.cs, তবে অবশ্যই ইতিমধ্যে সেই নামটির একটি সত্তা রয়েছে।

এটি ডোমেন মডেল।


"উপরের পরিষেবাটির মতো একই প্রয়োজনীয়তার সাথে আমার একাধিক পরিষেবা রয়েছে" " এর অর্থ কি এই যে একাধিক পরিষেবাগুলি উপরের কোডটি ব্যবহার করে, বা একাধিক পরিষেবাগুলির একই প্যাটার্ন অনুসরণ করে তাদের নিজস্ব সংস্করণ সরবরাহ করা প্রয়োজন?
নাথানেল

তারা একই ধরণের নিজস্ব সংস্করণ সরবরাহ করে
ম্যাটিয়াস

উত্তর:


5

আমি মনে করি যে এখানে আপনার নেমস্পেসিংয়ের উন্নতির জন্য আপনি যে একক বৃহত্তম কাজটি করতে পারেন তা হ'ল Serviceআপনার EventServiceনাম স্থানটি সরিয়ে ফেলা । আমি আরও এই জাতীয় নাম স্পেস সামঞ্জস্য করব:

Services.Events.EventService.cs //(the actual service)
Services.Events.EventExtensions.cs
Services.Events.ParticipantCoordinator.cs
Services.Validators.DateValidator.cs
Services.Validators.ParticipantValidator.cs

আমি এখনও মনে করি এটি যদিও কিছু উন্নতি করতে পারে।

আমি নেমস্পেসগুলি পছন্দ করতাম তবে আজকাল আমি কম বেশি মনে করি। আপনার নেমস্পেসগুলি গভীরভাবে বাসা বাঁধাই আপনার কোডটিকে খুব ভার্জোজ করে তুলতে পারে এবং জিনিসগুলি এতদূর ভেঙে দেওয়া উত্তরাধিকারের জন্য আপনার ক্ষমতা হ্রাস করে। উদাহরণস্বরূপ আপনার কোডে, কোনও DateValidatorশ্রেণি সহজেই অন্য কোথাও ব্যবহার করা যেতে পারে, সুতরাং এর উপরে অনেকগুলি নেমস্পেস থাকা উচিত নয়, যেহেতু ইভেন্ট-সার্ভিস ব্যতীত অন্যান্য পরিষেবাগুলি এখন একটি ডেটভালিডেটর শ্রেণীর সুবিধা নিতে পারে। একই এক্সটেনশন পদ্ধতিতে প্রযোজ্য। এমন কোনও সময় নেই (যা আমি দেখতে পাচ্ছি) যেখানে আপনাকে একই সাথে আপনার সমস্ত বর্ধনের পদ্ধতি দেখতে হবে, সুতরাং এটি যে বিষয়টির সাথে সম্পর্কিত সেটিকে এটির সাথে ভাগ করে নেওয়া আরও বোধগম্য। এই ক্ষেত্রে EventExtensionsসম্ভবত আপনার লিঙ্কগুলি EventService, সুতরাং যৌক্তিকভাবে তাদের উচিত আমার মতে একসাথে বসে।


প্রকল্পটি খুব বড় এটি নির্দিষ্ট স্তরে না ভেঙে। ইভেন্ট নেমস্পেসের ডেটভালিডেটর কেবল ইভেন্ট-নির্দিষ্ট কেসগুলি পরিচালনা করে এবং এইভাবে অন্য কোথাও ব্যবহার করা যায় না। আমি পরিষেবাগুলি পছন্দ করি। ইভেন্টস । আমি কীভাবে তা ভাবতে পারি না। আমি মনে করি কিছু রিফ্যাক্টরিংয়ের জন্য এটির সময়!
ম্যাটিয়াস

@ মাটিয়াস - এটি ফর্সা। যতদূর আমি দেখতে পাচ্ছি, নেমস্পেসিং (মূল নির্দেশিকাগুলির বাইরে যেমন সাইদ নীচে উল্লিখিত রয়েছে) কেবল স্বাদের বিষয়।
কার্ল নিকল

5

আপনি সার্বজনীন প্যাটার্ন অনুসরণ করতে মাইক্রোসফ্ট থেকে জেনারেল নামকরণ গাইডলাইনস এবং নেমস্পেস নামকরণের গাইডলাইনগুলি পড়েন না কেন ?

আমি মনে করি সূত্রটি <Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]ঠিক কাজ করে।


2

যথাযথ নেমস্পেস নকশা যৌক্তিক এবং শারীরিক নকশা উভয় বিবেচনা করবে।

যদিও নামস্থানগুলির মূল যুক্তিটি বেশিরভাগ ক্ষেত্রে অবজেক্ট এবং পদ্ধতির নামের মধ্যে সংঘর্ষ রোধ করার জন্য ছিল, এটি সামগ্রিক সমাধান আর্কিটেকচার এবং ডিজাইনের একটি গুরুত্বপূর্ণ উপাদান হয়ে দাঁড়িয়েছে। আপনার ধারণাগত শ্রেণিবদ্ধতা এবং লজিকাল ডিজাইনটি কেবলমাত্র বোঝার জন্য নয়, আপনি সম্ভবত চান যে আপনার কোডটি পরিচ্ছন্নভাবে প্যাকেজ করা ভালভাবে ডিজাইন করা এবং সহজেই পুনরায় ব্যবহারযোগ্য গ্রন্থাগারগুলিতে করা যেতে পারে যা পরে অন্যান্য প্রকল্প এবং পণ্যগুলিতে সহজেই বান্ডিল করা যায়। এটি সম্ভবত ভাল শারীরিক নকশার কাঙ্ক্ষিত ফলাফল।

.NET ফ্রেমওয়ার্ক এবং কীভাবে যুক্ত আকারের মজলিসমূহে সম্পর্কিত কার্যকারিতার ইউনিট আপনাকে দেওয়া হয় তা দেখুন। আপনি একটি রেফারেন্স এবং একটি ব্যবহারের বিবৃতিতে ফেলে দিতে পারেন এবং হঠাৎ আপনার কোনও সংখ্যক রান্নাঘর সিংকে টেনে না ফেলে প্রাসঙ্গিক কার্যকারিতা উপলব্ধ। এর কারণ এটি। নেট ফ্রেমওয়ার্কের শারীরিক নকশা intelligent বুদ্ধিমান নেমস্পেসিং সহ phys শারীরিকভাবে সম্পর্কিত মোতায়েনযোগ্য ইউনিটগুলিতে যুক্তিযুক্তভাবে সম্পর্কিত কোডটি প্যাকেজ করেছে। নেমস্পেস এবং সমাবেশগুলির মধ্যে একটি দুর্দান্ত ম্যাপিং তৈরি করে, মাইক্রোসফ্টের .NET ফ্রেমওয়ার্কের স্থপতি এবং বিকাশকারীরা আপনার কাজকে উল্লেখযোগ্যভাবে সহজ করে দিয়েছে (অবশ্যই কিছু অন্যথায় তর্ক করতে পারে, তবে তারা যা করেছে তার চেয়ে আমি বরং খুশি)।

সি # তে নেমস্পেসিং বরং স্বেচ্ছাচারী। একে অপরের থেকে দূরে সরিয়ে আসা সমাবেশগুলিতে আপনি বিজোড় স্থানে নেমস্পেস রাখতে পারেন। এই ক্ষেত্রে যে কোনও সহায়ক শৃঙ্খলা হ'ল একটি সুসংগঠিত সফ্টওয়্যার পণ্যটিতে আপনার ব্যক্তিগত অবদান। প্রতিটি ক্ষেত্রে ঠিক কী করা উচিত সে সম্পর্কে আপনাকে পরামর্শ দেওয়ার সাহস আমি করব না। এই উত্তরে আমি যা অর্জন করতে আশা করি তা হ'ল আপনি যখন আপনার নামের স্থানটি সংজ্ঞায়িত করেন তখন আপনাকে শারীরিক নকশার পাশাপাশি যৌক্তিক নকশার বিষয়ে ভাবতে বাধ্য করা। আপনি যত বেশি জিনিসকে যুক্তিযুক্তভাবে সম্পর্কিত এবং শৃঙ্খলাবদ্ধভাবে (শারীরিকভাবে) বান্ডিল করেছেন তত বেশি সহজ জিনিসগুলি পরে আপনার পক্ষে এবং অন্যদের জন্যও হতে পারে যেগুলি আপনাকে কোনও দিন আপনার কোড মোকাবেলা করতে পারে।

সুতরাং, আপনি যখন নিজের নাম স্পেসিংয়ের সমস্যাগুলি সমাধান করবেন তখন কীভাবে আপনার কোডটি সমাবেশগুলি এবং উপাদানগুলিতে প্যাকেজ হবে সে সম্পর্কে চিন্তাভাবনা করুন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.