বুলিয়ান ক্ষেত্রের নামকরণ যা একটি ক্রিয়াপদ


14

জাভাতে, বুলিয়ান ক্ষেত্রগুলির জন্য কনভেনশন গেটর এবং সেটার হবে isField()এবং setField()। এই পুরোপুরি জরিমানা ফিল্ডের নাম যে বিশেষণ হয় পছন্দ সঙ্গে কাজ করে active, visible, closed, ইত্যাদি

তবে আমি কীভাবে এমন একটি ক্ষেত্রটির নাম করব যার একটি ক্রিয়াপদের অর্থ আছে haveChildren? (_ ) ক্রিয়া ( ) এর সাথে যুক্ত করুন, সম্ভবত?havingChildren

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


3
এটি যদি একটি বুল ক্ষেত্র হয়, parentকাজ করবে।
ইয়ানিস

2
আপনি যদি অর্থটি উল্টিয়ে দিয়ে পালাতে পারেন তবে 'নিঃসন্তান' কৌতূহলের দিকে যাবে।
কিলিয়ান ফট

3
আইডিইর কারণে ব্যাকরণগত সমস্যাটি এড়াতে কোনও ক্ষেত্রের নাম সম্পর্কিত হুপের মধ্য দিয়ে ঝাঁপিয়ে পড়ে এক ধরণের নির্বোধ মনে হয়। তথাপি, এখানে, কিছু অতিরিক্ত পরামর্শ আছে, যদিও আমি মনে করি বেশী ইতিমধ্যে অন্যদের দ্বারা দেওয়া ভাল আছেন: isAllowedChildren, isNotEmpty, isContainer, isLeaf,
ডঃ কূটবুদ্ধি এর শিক্ষানবিশ

নিঃসন্তানকে যাওয়ার উপায় বলে মনে হয়। প্যারেন্টের সাথে সমস্যা হ'ল প্যারেন্ট অবজেক্টের রেফারেন্স ধরে রাখার জন্য আমার কাছে ইতিমধ্যে প্যারেন্ট ফিল্ড রয়েছে। আমি মনে করি যা আমার প্রয়োজন তা হ'ল বুলিয়ান ক্ষেত্রগুলির জন্য সমস্ত ক্রিয়াগুলি বিশেষণে রূপান্তরিত করা rule
dnang

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

উত্তর:


11

সংক্ষিপ্ত উত্তর:

  • অভ্যন্তরীণ বাস্তবায়ন কিন্তু প্রত্যাশিত আচরণ প্রতিফলিত করার জন্য পদ্ধতির নামগুলি সুপারস করা হয় না।

দীর্ঘ উত্তর:

haveChildren()নাম দেওয়া উচিত hasChildren()

এছাড়াও আমি hasChildren()বুলিয়ান ক্লাসের সদস্য হিসাবে অগত্যা প্রয়োজনীয় হিসাবে দেখছি না । আমার ধারণা এই জাতীয় পদ্ধতিটি কোনও ধরণের সদস্য Collectionখালি কিনা তা খুঁজে বের করতে পারে ।

কোনও IDE উত্পাদিত getters এবং সেটটারগুলিকে ডিফল্ট নাম দেয় যা পাথরের উপর সেট একটি আইন হিসাবে বিবেচিত হয় না।

আরেকটি বিষয়: ইন্টারফেসে এখনও প্রয়োগযোগ্য পদ্ধতিগুলির নাম রয়েছে।

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

উদাহরণস্বরূপ Iteratorজাভার ইন্টারফেসটি ধরুন ।

আপনি যখন বাস্তবায়ন Iterator, এমনকি যখন আপনি একটি বুলিয়ান সদস্য নামে আছে next, আপনি নামান্তর করতে supossed নেই hasNext()করার isNext()বা isHavingNext()। এটি একটি বাস্তবায়ন বিশদ। প্রকৃতপক্ষে, আমি বাস্তবায়ন করেছি Iteratorএবং আমি যা করি তা আমার ক্লাসে যে ধরনের রয়েছে তার একটি সদস্য রয়েছে, যার নাম দেওয়া হয়েছে next(বুলিয়ান নয়)। hasNext()তারপরে ফিরে আসে next!=null

এছাড়াও, এটি দেখুন:

class patient {
      private boolean pulse;
      private boolean breaths:
      public boolean isDead(){ return (!pulse & !breaths);}
}

নোট করুন যে isDead()কোনও সাধারণ প্রাপ্তি নয়।

IDEs এর উত্পাদনশীলতা সরঞ্জামগুলি সেগুলির জন্য নিন।


3

আমি ক্ষেত্রটির নামকরণের পরামর্শ দিচ্ছি parentযাতে গ্রাহকটি হবে isParentএবং সেটারটি হবে setParent

এছাড়াও আপনি চেষ্টা করে দেখতে পারেন childPresentপরিবর্তনশীল নাম এবং জন্য isChildPresentএবং setChildPresentগেটার এবং সেটার হিসাবে।


1
উপরে ইয়ানিসের মন্তব্য হিসাবে একই ধারণা তবে সমস্যাটি হ'ল আমার কাছে ইতিমধ্যে parentপ্যারেন্ট অবজেক্টের রেফারেন্স ধরে রাখার ক্ষেত্র রয়েছে। আমি মনে করি যা আমার প্রয়োজন তা হ'ল বুলিয়ান ক্ষেত্রগুলির জন্য সমস্ত ক্রিয়াগুলি বিশেষণে রূপান্তরিত করা rule
dnang

0

আপনি doesক্রিয়া আগে রাখতে পারে । doesHaveChildrenযেমন আপনার দেওয়া উদাহরণ হিসাবে । অথবা সম্ভবত shouldHaveChildrenপ্রসঙ্গে নির্ভর করে।


1
সমস্যাটি হ'ল, পদ্ধতিটির নামটি আমার কাছে নেই কারণ গেটর এবং সেটার আইডিই দ্বারা স্বয়ংক্রিয়ভাবে উত্পাদিত হয় (উদাঃ Eclipse)।
ডানং

1
শুধু পদ্ধতি (গুলি) এর নতুন নামকরণ করবেন? পুনরায় নামকরণের পদ্ধতিগুলিতে একটি কীবাইন্ড যুক্ত করুন (যদি আপনি ইতিমধ্যে একটি না পেয়ে থাকেন)।
মাইগুয়েল.মার্টিন

@ ডানহং এটি যদি আপনার কোড হয় তবে আইডিই যখন স্বয়ংক্রিয়ভাবে জেনারেট করে তখন সেগুলি কল করে তা বিবেচনা না করেই আপনি যে পদ্ধতিগুলি পছন্দ করতে পারেন সেই পদ্ধতিগুলিতে কল করতে পারেন।
রিচার্ড

1
@ মিগুয়েল.মার্টিন একটি কারণ আপনি এটি করতে চান না তা হ'ল জাভা-মটরশুটি। অনুমান করা isSomethingসেই স্পেসিফিকেশনের একটি অংশ এবং এর চারপাশে অনেক অনুমান করা হয়, ভাল বা খারাপ, এর সাথে লড়াই করা doesSomethingকোনও বিষয়টিকে এতটা সুস্পষ্ট উপায়ে ভেঙে ফেলতে পারে যা বাগের দিকে পরিচালিত করে।

0

প্রশ্নটি পুরোপুরি যুক্তিসঙ্গত। কখনও কখনও স্বয়ংক্রিয়ভাবে উত্পন্ন পদ্ধতিটির নামকরণ যথেষ্ট নয়। উদাহরণ: জেএসএফ পরিচালিত মটরশুটিগুলি isXyz()কোনও boolean xyzসম্পত্তির প্রাপ্তি পদ্ধতি হিসাবে প্রত্যাশিত ।

আমি ব্ল্যাকপ্যাথারের সাথে একমত, যিনি ক্ষেত্রটির নামকরণ parentএবং isParentপদ্ধতির নাম হিসাবে ব্যবহার করার পরামর্শ দেন । তথ্য গোপনীয়তার নীতি অনুসারে, গিটার এবং সেটার পদ্ধতিগুলির পাঠযোগ্যতা গুণকের চেয়ে বেশি গুরুত্বপূর্ণ।

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