জাভা পদ্ধতিগুলির নামকরণের সম্মেলনগুলি যা বুলিয়ান ফেরত দেয় (কোনও প্রশ্ন চিহ্ন নেই)


96

আমি অন্য ভাষাতে পদ্ধতি / ফাংশন নামের শেষে প্রশ্ন চিহ্ন ব্যবহার করতে চাই। জাভা আমাকে এটি করতে দেয় না। একটি কর্মপরিকল্পনা হিসাবে আমি আর কীভাবে জাভাতে বুলেট রিটার্নিং পদ্ধতির নাম রাখতে পারি? একটি ব্যবহার is, has, should, canএকটি পদ্ধতি শব্দ কিছু ক্ষেত্রে জন্য ঠিক সামনে। এই জাতীয় পদ্ধতির নাম দেওয়ার আরও ভাল উপায় কি নেই?

উদাহরণস্বরূপ, createFreshSnaphot?


4
কোন ?পদ্ধতির নামের ক্ষেত্রে কোন ভাষাটি অনুমতি দেয় ?
SLaks

11
@ এসএলক্স, স্কিম, রুবি ...
স্কিলড্রিক

প্রকল্পে, আমরা সর্বদা pপদ্ধতির নামের শেষে রাখি
এরিক রবার্টসন

@ এরিক: সর্বদা নয়, তবে "পি" হ'ল পূর্বাভাসগুলি নির্দিষ্ট করার একটি মানক উপায়
জেসন এস

আমরা = আমার স্নাতক প্রকল্পের বর্গ সর্বদা করতাম। আমি জাভাতে এই সম্মেলনটি কখনই ব্যবহার করব না।
এরিক রবার্টসন

উত্তর:


125

সম্মেলনে হ'ল নামে একটি প্রশ্ন জিজ্ঞাসা করা।

এখানে জেডিকে পাওয়া যায় এমন কয়েকটি উদাহরণ রয়েছে:

isEmpty()

hasChildren()

এইভাবে, নামগুলি এমনভাবে পড়া হয় যাতে শেষের দিকে তাদের একটি প্রশ্ন চিহ্ন থাকে।

সংগ্রহটি কি খালি?
এই নোডের কি সন্তান রয়েছে?

এবং, এর পরে trueহ্যাঁ, এবং এর falseঅর্থ হ'ল না।

বা, আপনি এটি দৃ an়তার মতো পড়তে পারেন:

সংগ্রহটি খালি।
নোডের বাচ্চা রয়েছে

দ্রষ্টব্য:
কখনও কখনও আপনি কোনও পদ্ধতির নাম রাখতে চাইবেন createFreshSnapshot?। প্রশ্ন চিহ্ন ছাড়াই, নামটি বোঝায় যে পদ্ধতিটি একটি স্ন্যাপশট তৈরি করা উচিত, এটির পরিবর্তে এটির প্রয়োজন কিনা তা পরীক্ষা করে দেখুন।

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

আপনি যদি একটি যদি Google অনুসন্ধান জন্য isEmpty()জাভা API এ, আপনি ফলাফল প্রচুর পেতে।


ক্রিয়েটফ্রান্সস্পট সম্পর্কে কী?
letronje

4
@ লেটার, ভাল, আমি সম্ভবত এটি আলোকিত isSnapshotExpiredবা অন্য কিছুটির নামকরণ করব । (আপনার মানদণ্ডের ভিত্তিতে)
jjnguy

8
আমি 'should' - এই শব্দটি ব্যবহার করে 'ক্রিয়েফার্সস্প্যাপ' ইস্যুটি পেয়েছি - যেমন "shouldCreateFreshSnapshot ()" (যদিও এই ক্ষেত্রে স্ন্যাপশটপ্রাপ্ত () ভাল)
ডিজেক্লেওয়ার্থ

4
কোনও shouldHeartbeat()পদ্ধতিতে হার্টবিট বার্তা প্রেরণ করা উচিত কিনা তা পরীক্ষা করে দেখছি ।
এরিক রবার্টসন

কেন মনে isEmpty()এবং hasChildren()হয় প্রশ্ন , এবং গবেষকেরা ? যদি আপনি সেই নামগুলি দৃser়তা বা ভবিষ্যদ্বাণী হিসাবে মনে করেন তবে এটি ইংরেজিতে কিছুটা ভাল পড়ে।
রিক

29

আপনি যদি চান যে আপনার শ্রেণি জাভা বিনের স্পেসিফিকেশনের সাথে সামঞ্জস্যপূর্ণ হয় , যাতে প্রতিচ্ছবিগুলি ব্যবহার করার সরঞ্জামগুলি (যেমন জাভাবিল্ডার্স , জে গুডিজ বাইন্ডিং ) বুলিয়ান গেটারগুলিকে চিনতে পারে, হয় ব্যবহার করুন getXXXX()বা কোনও isXXXX()নামের নাম হিসাবে। জাভা মটরশুটি থেকে স্পেস:

8.3.2 বুলিয়ান বৈশিষ্ট্য

এছাড়াও, বুলিয়ান বৈশিষ্ট্যগুলির জন্য, আমরা একটি গিটার পদ্ধতিটি প্যাটার্নটির সাথে মেলে:

public boolean is< সম্পত্তি নাম > ();

এই "<হয় PropertyName পদ্ধতি" পেতে <পরিবর্তে প্রদান করা হতে পারে> " PropertyName >" পদ্ধতি, অথবা এটি একটি "পেতে <ছাড়াও প্রদান করা হতে পারে PropertyName >" পদ্ধতি। উভয় ক্ষেত্রেই, যদি " বুড়ীয় সম্পত্তি হিসাবে" << হল সম্পত্তি "> পদ্ধতি উপস্থিত থাকে তবে আমরা সম্পত্তি মানটি পড়তে " হয় < সম্পত্তি > নাম "পদ্ধতিটি ব্যবহার করব । বুলিয়ান সম্পত্তি উদাহরণ হতে পারে:

public boolean isMarsupial();
public void setMarsupial(boolean m);

এটি বিভ্রান্তিকর যখন আপনি বলেন public boolean is<PropertyName>(); এটি জেনেরিকের মতো দেখাচ্ছে।
এরিক রবার্টসন

আরে, আমি শুধু অনুমানটি উদ্ধৃত করছি। আমি অনুমান অনুযায়ী italicize করব।
জেসন এস

4
আমি জাভা মটরশুটি সামঞ্জস্যের যত্ন নেব না, আমি কেবল আমার পদ্ধতির নামগুলি ঠিক শোনাতে চাই :)
লেট্রঞ্জে

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

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

26

আমি এই লিঙ্কটি পোস্ট করতে চাই কারণ এটি উত্তরকে চেক করতে এবং আরও জাভা স্টাইলের সম্মেলনের সন্ধানের জন্য আরও সহায়তা করতে পারে

জাভা প্রোগ্রামিং স্টাইল নির্দেশিকা

আইটেম "2.13 হ'ল উপসর্গটি বুলিয়ান ভেরিয়েবল এবং পদ্ধতিগুলির জন্য ব্যবহার করা উচিত।" বিশেষভাবে প্রাসঙ্গিক এবং এটি উপসর্গের পরামর্শ দেয় ।

স্টাইল গাইডটি পরামর্শ দিতে চলেছে:

কয়েকটি বিকল্প আছে করতে হয় উপসর্গ তড়কা কিছু পরিস্থিতিতে ভালো হয়। এগুলি হল রয়েছে , যা করতে পারেন এবং উচিত উপসর্গ:

boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;

আপনি যদি গাইডলাইনগুলি অনুসরণ করেন তবে আমি বিশ্বাস করি যে উপযুক্ত পদ্ধতির নাম দেওয়া হবে:

shouldCreateFreshSnapshot()

4
এফওয়াইআই, এর গাইডলাইনগুলিতে কপিরাইট জিওটেকનિકલ সফটওয়্যার পরিষেবা রয়েছে। এটি বলেছিল, তারা বৈধ হওয়ার পরামর্শ দেওয়ার জন্য তারা নীচের অংশে উত্সযুক্ত উত্স রয়েছে।
ডোনাল লাফার্টি

11

ব্যর্থ হতে পারে এমন পদ্ধতিগুলির জন্য, এটিই আপনি রিটার্ন টাইপ হিসাবে বুলিয়ান নির্দিষ্ট করেছেন, আমি উপসর্গটি ব্যবহার করব try:

if (tryCreateFreshSnapshot())
{
  // ...
}

অন্যান্য সমস্ত ক্ষেত্রে যেমন উপসর্গ ব্যবহার করুন is.. has.. was.. can.. allows....


15
তবে চেষ্টা করে বোঝাবেন না যে এটি একটি প্রশ্ন (একটি রিটার্নের মান আছে)।
স্টিভ কুও

কোনও পদ্ধতি ব্যর্থ হয়েছে কি না তা নির্দেশ করার জন্য কখনই কোনও বুলিয়ান ফিরে আসবেন না। পদ্ধতিটি ব্যর্থ হলে একটি ব্যতিক্রম ছুঁড়ে দিন। ভাবুন পদ্ধতিটি ব্যর্থ হয়েছে এবং আপনি একটি মিথ্যা পেয়েছেন, আপনি কীভাবে নির্ধারণ করবেন যে ঠিক কী ভুল হয়েছে?
ওয়াউটার ভ্যান কোপ্পেন

5

স্ট্যান্ডার্ডটি হ'ল 'বা' হ'ল একটি উপসর্গ হিসাবে ব্যবহার হয়। উদাহরণ হিসেবে বলা যায় isValid, hasChildren


2

isএটিই আমি অন্য যেকোন তুলনায় বেশি এসেছি। বর্তমান পরিস্থিতিতে যেটি বোধ হয় তা হ'ল সর্বোত্তম বিকল্প।


0

এই সাধারণ নামকরণ সম্মেলনে আমি একটি ভিন্ন দৃষ্টিভঙ্গি তুলে ধরতে চাই, যেমন:

দেখতে java.util.Set :boolean add​(E e)

যুক্তি যেখানে:

কিছু প্রক্রিয়াজাতকরণ করুন তারপর এটি সফল হয়েছে কিনা তা রিপোর্ট করুন

যদিও returnপ্রকৃতপক্ষে একটি booleanপদ্ধতির নামটি ফলাফলের প্রকারের পরিবর্তে প্রক্রিয়াটি সম্পূর্ণ করতে নির্দেশ করবে (এই উদাহরণের জন্য বুলিয়ান)।

আপনার createFreshSnapshotউদাহরণটি আমার কাছে এই দৃষ্টিকোণের সাথে আরও সম্পর্কিত বলে মনে হচ্ছে কারণ এটির অর্থ মনে হচ্ছে: একটি নতুন-স্ন্যাপশট তৈরি করুন তারপরে ক্রিয়েশন-অপারেশন সফল হয়েছে কিনা তা রিপোর্ট করুন। এই যুক্তি বিবেচনা করে নামটি createFreshSnapshotআপনার অবস্থার জন্য সেরা বলে মনে হচ্ছে।


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

4
আমার অনুমান কারণ প্রাথমিকভাবে আমি কেবল "সেট: বুলেট অ্যাড (ই ই)" লিখেছি যাতে লোকেরা খেয়াল করেনি যে এটি বিখ্যাত java.util.Set সম্পর্কে; অথবা হতে পারে আমার ইংরেজিটি খুব খারাপ D
আপভোটের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.