বিমূর্ত ক্লাসের জন্য নামকরণের সম্মেলন


104

আমি স্পষ্টভাবে মনে রাখতে পারি যে, এক সময়, মাইক্রোসফ্ট দ্বারা পরিচালিত গাইডলাইনটি ছিল একটি বিমূর্ত শ্রেণিতে "বেস" প্রত্যয় যুক্ত করা ছিল যা সত্যটিকে বিমূর্ত করার বিষয়টি প্রত্যাহার করতে পারে। অত: পর, আমরা মত ক্লাস আছে System.Web.Hosting.VirtualFileBase, System.Configuration.ConfigurationValidatorBase, System.Windows.Forms.ButtonBase, এবং, অবশ্যই, System.Collections.CollectionBase

তবে আমি লক্ষ্য করেছি যে, দেরিতে, ফ্রেমওয়ার্কের অনেকগুলি বিমূর্ত ক্লাস এই সম্মেলনটি অনুসরণ করছে বলে মনে হয় না। উদাহরণস্বরূপ, নিম্নলিখিত ক্লাসগুলি সমস্ত বিমূর্ত তবে এই সম্মেলনটি অনুসরণ করে না:

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

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

তো, আমি কি এটা হারাচ্ছি? এই নির্দেশিকা কি কখনও উপস্থিত ছিল? এটি কি একটি শব্দ ছাড়া সবে ছেড়ে দেওয়া হয়েছে? আমি কি গত দু'বছর ধরে নিজের দ্বারা দীর্ঘ শ্রেণীর নামগুলি তৈরি করে যাচ্ছি কিছুই?

কেউ আমাকে এখানে একটি হাড় ফেলে দেয়।

আপডেট আমি পাগল নই গাইডলাইনটি বিদ্যমান ছিল। ক্রিজিসটফ কোওয়ালিনা 2005 সালে এটি সম্পর্কে গ্রিপ করেন।


যদি আপনি এই অংশটি পড়ে থাকেন তবে ক্রিজিসটফ কেবল "সুপারিশের একটি সেট" প্রাপ্তির জন্য অভিযোগ করেন - অগত্যা যে সুপারিশগুলি মাইক্রোসফ্ট-অফিসিয়াল ছিল। আমি এমএসের গাইডলাইনগুলি পড়তে এবং এগুলির বিরুদ্ধে সুপারিশ করতে দেখছি।
জন রুডি

4
আমি এটি পড়েছিলাম, যদিও আমি প্রথমবারের মতো article নির্দিষ্ট নিবন্ধটি দেখেছি। আসলে এটি একটি স্বস্তি। আমি আসলে সুপারিশটি পছন্দ করি না। এটি এখান থেকে আমার প্রচুর অঙ্কুরোদগম করবে। :)
মাইক হাফার

উত্তর:


69

ইন ফ্রেমওয়ার্ক ডিজাইন নির্দেশিকা পি 174 পদ বলে:

চলুন একটি "বেস" প্রত্যয় বেস ক্লাস নামকরণ যদি বর্গ প্রকাশ্য API গুলি ব্যবহারের জন্য উদ্দীষ্ট।

এছাড়াও: http://blogs.msdn.com/kcwalina/archive/2005/12/16/BaseSuffix.aspx


21

এছাড়াও, যদি বিমূর্ত শ্রেণিতে কয়েকটি স্থিতিশীল সদস্য ব্যবহার করা হয় তবে 'বেস' কুরুচিপূর্ণ হতে পারে।


14

এ জাতীয় গাইডলাইন আমার মনে নেই। আমি বিশ্বাস করি আপনার সেই নামকরণটি বোঝার জন্য ব্যবহার করা উচিত। কখনও কখনও বিমূর্ত শ্রেণিটি কেবল কয়েকটি শ্রেণীর (একটি সরঞ্জাম হিসাবে) সাধারণ কার্যকারিতা সরবরাহ করার জন্য তৈরি করা হয়, যা আমার মনে হয় প্রত্যয়টি হওয়া উচিত। যাইহোক, কিছু ক্ষেত্রে, আপনি এটি একটি বহুবর্ষবাদক্রমক্রমের ভিত্তি হিসাবে ব্যবহার করতে চান যা এটি নিজেই সম্পূর্ণ নয়। এই ক্ষেত্রে আমি সাধারণ শ্রেণির মতো নামকরণের পরামর্শ দিই।

আপনি দেখতে পাচ্ছেন, আপনি সম্ভবত এমন কোনও পদ্ধতি ঘোষণা করবেন না যা কোনও বাটনবেসকে প্যারামিটার হিসাবে গ্রহণ করে। এটি সাবক্লাসের জন্য ন্যূনতম কার্যকারিতা সরবরাহ করার জন্য ডিজাইন করা হয়েছে। তবে, আপনি ConfigurationElementকোনও সত্তাকে বিভিন্ন রূপের সাথে বিবেচনা করতে পারেন তবে এটি নিজেই সম্পূর্ণ নয় (এবং এটি বিমূর্ত)


11

কখনও কখনও বেস এখনও প্রয়োজনীয় হয়, বিশেষত যখন আপনি কংক্রিটের বাস্তবায়ন তৈরি করার জন্য কারও জন্য একটি কংক্রিট শ্রেণি এবং একটি বিমূর্ত শ্রেণি উভয় সরবরাহ করেন।
উদাহরণস্বরূপ কন্ট্রোলার এবং কন্ট্রোলারবেস (আসলে কন্ট্রোলারটি বিমূর্তও হয় তবে কন্ট্রোলারবেসের চেয়ে আরও বেশি কার্যকারিতা সরবরাহ করে)

কোনও ইন্টারফেসের বিরুদ্ধে প্রোগ্রামিং করার সময় বেস প্রত্যয়টি কুৎসিত হয়, তাই আমি মনে করি যে মাইক্রোসফ্টের এটি ব্যবহার না করার নির্দেশিকাটি তখন প্রয়োগ হয় যখন বিমূর্ত শ্রেণিটি মূলত ইন্টারফেসের মতো ব্যবহৃত হয়। সম্ভবত তারা পাবলিক এপিআই বলতে কী বোঝায়।

মুল বক্তব্যটি হ'ল এমন কেস রয়েছে যেখানে বেস প্রত্যয় ব্যবহারের চেয়ে ভাল বিকল্প নেই।


4
আমি রাজী. আমি একটি ফিড সিস্টেমে কাজ করছি যা বিভিন্ন উত্স থেকে সামগ্রী পার্স করে। আমরা পাবলিক এপিআইতে আইফিডপার্সার নামে একটি ইন্টারফেস ব্যবহার করি এবং অভ্যন্তরীণভাবে আমরা বেস ফিডপার্সার
রুই জারিম্বা

2

আমি বেস-প্রত্যয় এড়াতে প্রবণতাটি বুঝতে পারি, তবে কিছু প্রত্যয়টির প্রয়োজনীয়তাও আমি বুঝতে পারি । এখন, এই নিবন্ধটির একটি মন্তব্য "টাইপ" ব্যবহার করে কোনও ব্যবহার না করার জন্য দ্বিতীয় পছন্দ হিসাবে প্রত্যয় হিসাবে ব্যবহার করার পরামর্শ দেয়। আমি বিশ্বাস করি এটি বিভ্রান্তিকর, তবে আইডিয়া যে "এই জাতীয় অ-প্রতিশ্রুতিবদ্ধ শব্দটি ইঙ্গিত দেয় যে এটি একটি অ-প্রতিশ্রুতিবদ্ধ শ্রেণি" আমার সাথে আটকে আছে।

বিকল্প হিসাবে: আমি বস্তুকে "নির্দিষ্ট জাতি বা পরিবারের অন্তর্ভুক্ত" হিসাবে চিহ্নিত করতে প্রত্যয় হিসাবে "কিন্ড" ব্যবহার করতে পছন্দ করব ( উইকিশনারি: -জাতি )।

উদাহরণ: DataProviderএবং ReflectiveDataProviderউভয়ইDataProviderKind

জীববিজ্ঞান দ্বারা অনুপ্রাণিত যেখানে উদাহরণস্বরূপ "ক্যানিস লুপাস" "ক্যানোইডিয়া" পরিবারের অন্তর্ভুক্ত, এটি প্রায় মোটামুটি "কুকুর-ইশ" অনুবাদ করে।


2

মাইক্রোসফ্ট জানিয়েছে:

https://docs.microsoft.com/en-us/dotnet/standard/design-guidlines/names-of-class-structs- and-interfaces

"ON বেস ক্লাসের নাম সহ উত্সযুক্ত শ্রেণীর নাম সমাপ্তি বিবেচনা করুন। এটি খুব পাঠযোগ্য এবং সম্পর্কের বিষয়টি স্পষ্টভাবে ব্যাখ্যা করে code কোডের মধ্যে এর কয়েকটি উদাহরণ হ'ল: আর্গুমেন্টআউটঅফ্র্যাঞ্জএক্সসেপশন, যা এক ধরণের ব্যতিক্রম এবং সিরিয়ালাইজেবল অ্যাট্রিবিউট, যা একটি এট্রিবিউটের ধরণের। তবে, এই গাইডলাইনটি প্রয়োগ করার ক্ষেত্রে যুক্তিসঙ্গত রায় ব্যবহার করা গুরুত্বপূর্ণ; উদাহরণস্বরূপ, বোতাম শ্রেণি একটি ধরণের নিয়ন্ত্রণ ইভেন্ট, যদিও কন্ট্রোল তার নামে উপস্থিত হয় না। "

সাধারণভাবে বলতে গেলে, এটি "বেস" নামে সুস্পষ্টভাবে বাতিল করে দেয়।

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