বুল পদ্ধতির নামকরণ: বনাম কি পারে বনাম?


51

কোনও বুলেয়ান ফেরত দেওয়ার পদ্ধতির আরও ভাল নাম কোনটি?

IsSupportContentType

অথবা

CanSupportContentType

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

8
নেটিভ স্পিকার নয় তবে সাপোর্টকন্টেন্টটাইপ কি সবচেয়ে "ব্যাকরণগত" বিকল্প হতে পারে না?
রোমান রাইনার

8
প্রথমত IsSupportedContentTypeব্যাকরণগতভাবে সঠিক হতে হবে। (যদি না "সমর্থন সামগ্রীর ধরণ" বিশেষ্য হিসাবে কাজ করে, যা অসম্ভব বলে মনে হয়)
কোডসইনচোস 10:40

30
সহজভাবে কি supportsContentType? নিম্নলিখিত সম্পূর্ণভাবে পাঠযোগ্য: if (abc.supportsContentType("text/html"))। "সমর্থন করতে পারে" বোঝায় যে কন্টেন্ট-টাইপ সমর্থন করার জন্য আরও শর্ত রয়েছে।
অলিভিয়ার

10
নিবন্ধন করুন
আরএম

উত্তর:


106

হয় বনাম ক্যান

মতে মাইক্রোসফট নামকরণ সম্মেলন সুপারিশ , উভয় "হয়" এবং হয় "পারে না" ঠিক আছে (এবং তাই হয় "আছে") একটি বুলিয়ান জন্য একটি প্রিফিক্স হিসেবে।

সরল ইংরেজিতে, "ইস" টাইপটি নিজেই কিছু আবিষ্কার করতে ব্যবহৃত হত, এটি কী করতে পারে তা নয়। উদাহরণস্বরূপ, IsFixed, IsDerivedFrom, IsNullableসব CLR ধরনের ও পদ্ধতি খুঁজে পাওয়া যেতে পারে। এই সমস্ত ক্ষেত্রে "ইস" একটি বিশেষণ অনুসরণ করে ।

এদিকে, "করতে পারেন" আরো পরিষ্কারভাবে ক্ষমতা নির্দেশ করে, যেমন CanEdit, CanRead, CanSeek। এই ক্ষেত্রে প্রতিটি, একটি ক্রিয়া অনুসরণ করা যেতে পারে ।

যেহেতু "সমর্থন" একটি ক্রিয়া, তাই আমি মনে করি আপনার ক্ষেত্রে CanSupportContentTypeএটি আরও ভাল।

সংক্ষিপ্ত বিকল্প

অন্যদিকে, সম্মেলনগুলি বলে যে উপসর্গটি alচ্ছিক। আরও কী, পদ্ধতির নামে যুক্তির ধরণটি অন্তর্ভুক্ত করা এক ধরণের উদাসীন, যেহেতু কোনও বিকাশকারী ইন্টেলিজেন্সে যুক্তির ধরণটি দেখতে পারেন। সুতরাং আপনি কেবল আপনার পদ্ধতির নাম রাখতেSupports এবং এটি এর মতো সংজ্ঞা দিতে পারেন:

public bool Supports(System.Net.Mime.ContentType contentType)

... যা সংক্ষিপ্ত এবং এখনও স্পষ্টভাবে উদ্দেশ্যটি যোগাযোগ করে। আপনি এটিকে ডাকবেন:

ContentType contentType = new ContentType("text/plain");
var someClass = new MediatorsClass();
bool ok = someClass.Supports(contentType);

বা একটি আপস হিসাবে সম্ভবত এটি সেরা:

public bool CanSupport(System.Net.Mime.ContentType contentType)

53
এটি ভালভাবে পড়লে এটি দুর্দান্ত:if ( someClass.Supports(contentType) )
candied_orange

5
… বাhasSupportedContentType
বার্গি

8
"ক্যানসপোর্টস" নামে পরিচিত একটি পদ্ধতি আমাকে আশ্চর্য করে যে কে কারা সফটওয়্যারকে ক্যান সমর্থন করতে সক্ষম করতে সময় ব্যয় করেছিল (টিনের ক্যানের মতো)। স্রেফ "সাপোর্টস" আরও ভাল বিকল্প, সন্দেহ নেই!
টি। সর - মনিকা

6
কখনও কখনও ডেভলপাররা যখন কোনও "অদ্ভুত শোনায়" বলতে পারে না, উদাহরণস্বরূপ যদি ইংরেজি তাদের প্রথম ভাষা না হয়।
জন উ

4
কখনও কখনও সংক্ষিপ্ত সংস্করণটি আরও খারাপ হয়। সি ++ স্ট্যান্ডার্ড লাইব্রেরিতে যেমন আমাদের কাছে রয়েছে std::vector::empty()। শুধুমাত্র এর নাম থেকে, এটি ভেক্টরটি খালি করে? অথবা ভেক্টরটি খালি আছে কিনা তা ফিরে আসে? প্রকৃতপক্ষে, যেহেতু পূর্ববর্তী কাজটি সম্পন্ন করে std::vector::clear()। তবে আপনাকে অবশ্যই নিশ্চিত হতে সাধারণভাবে ডক্সটি পড়তে হবে। বিপরীত উদাহরণ হিসাবে, কিউটি এর QVectorপক্ষে এই বিষয়টি বোঝা সহজ, যেহেতু শূন্যতার জন্য এটি পরীক্ষা করার পদ্ধতিটি QVector::isEmpty()
রুসলান

9

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

shouldComponentUpdate: (newProps: any) => boolean

19
ইমো বেশ খারাপ নামকরণ হওয়া উচিত , "ভাল, এটি
নথীটি

1
@ লুইস: আমি মনে করি হ্যারি এর মন্তব্যটি খুব কার্যকর is উদাহরণস্বরূপ, আমি প্লাগইন স্তরের মাধ্যমে কিছু ডেটাবেস-সম্পর্কিত ক্রিয়াকলাপগুলি অর্পণ করতে পারি, প্রতিটি প্লাগইনে একটি "হোল্ডক্লোজ কানেকশন" পদ্ধতি রয়েছে যা ফ্রেমটি অবহিত করে যে কিছু ক্লিনআপ করা উচিত। একটি উদাহরণ, তবে "উচিত" অবশ্যই একটি বৈধ উপসর্গ।
গ্রেগ

1
@ গ্রেগ কীভাবে এর চেয়ে কম দ্ব্যর্থহীন WillCloseConnection?
বেসিক

@ লুইস আমরা সাধারণত কিছু ফাংশন আর্গুমেন্টের নাম ব্যবহার করি is...তবে ব্যবহার করি should..., যেখানে বুলিয়ান ইঙ্গিত দেয় যে ফাংশনটি কী জিনিসগুলিতে পরিবর্তন করার কথা । যদি কোনও ফাংশন allyচ্ছিকভাবে কোনও দস্তাবেজ বন্ধ isClosedকরতে পারে , প্যারামিটারটিকে কলিং করে যা সঠিক হবে (এটি এখনও বন্ধ হয়নি ) এবং তাই আমরা এটি shouldCloseচিহ্নিত করতে ব্যবহার করব যে এটি ফাংশনটি করার কথা ছিল। (নির্বিচারে উদাহরণ; আমাদের সম্ভবত
এটির

@ বেসিক কমপক্ষে আমাদের ক্ষেত্রে, অ্যাসিক্রোনাস will...ফাংশনগুলির জন্য সংরক্ষিত যা কোনও প্রতিশ্রুতি ফিরিয়ে দেয়; আমার আগের মন্তব্যে বর্ণিত ফাংশনটি যদি সিঙ্ক্রোনাস হয় will...তবে ব্যবহারটি আমাদের নামকরণের সাথে অসঙ্গতিপূর্ণ।
কেআরয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.