বুলিয়ান ক্ষেত্রের জন্য, এর গেটার / সেটারের নামকরণ কনভেনশন কী?


178

যেমন।

boolean isCurrent = false;

আপনি এর গেটার এবং সেটারটির নাম কী রাখবেন?


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

উত্তর:


255

ধরুন আপনার আছে

boolean active;

অ্যাকসেসর পদ্ধতি হবে

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

আরো দেখুন


9
আপনি কি সূর্যের কোড কনভেনশনগুলির বিভাগটি চিহ্নিত করতে পারবেন যেখানে বুলেটিন গেটারের নামগুলি নির্দিষ্টভাবে আচ্ছাদিত? আমি এটা খুঁজে পাইনি.
কনস্ট্যান্টিন পেলেপিলিন

4
আমার নামে একটি বুলিয়ান ফাইল করা আছে hasCustomName, এখন এর গেটর এবং সেটার পদ্ধতিগুলির জন্য আমার কী নাম রাখা উচিত ? কি setHasCustomName[setter]এবং hasCustomName[getter]ভাল?
হাদি

@ হাদী আপনার ভেরিয়েবলটির কেবলমাত্র "গ্রাহকনাম" এর নাম দিন এবং এর জন্য গেটর এন সেটটার উত্পন্ন করুন। প্রত্যাশিত সংগ্রহকারী এবং setters হয় public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
Assegd

1
আমরা কীভাবে কাস্টম নাম থেকে গ্রাহকের নাম পেতে পারি? ;)
কার্তিক চুগ

1
@ এসএসজিডি এটির "গ্রাহকনাম" বা "কাস্টমনাম" নামকরণ বিভ্রান্তিকর এবং এটি বোঝায় না যে এটি বুলিয়ান। ভেরিয়েবলটি দেখে আমি এটির একটি নাম আশা করি। এই ক্ষেত্রে, এটি "hasCustomName" আইএমও বলা উচিত।
নাথান

83

http://geosoft.no/development/javastyle.html#Specific

  1. is বুলিয়ান ভেরিয়েবল এবং পদ্ধতিগুলির জন্য উপসর্গটি ব্যবহার করা উচিত।

    isSet, isVisible, isFinished, isFound,isOpen

এটি জাভা কোর প্যাকেজগুলির জন্য সুন দ্বারা ব্যবহৃত বুলিয়ান পদ্ধতি এবং ভেরিয়েবলগুলির নামকরণের সম্মেলন প্রিফিক্সটি ব্যবহার করে স্থিতি বা পতাকা হিসাবে খারাপ বুলিয়ান নাম চয়ন করার একটি সাধারণ সমস্যা সমাধান করে। isStatus বা isFlag কেবল খাপ খায় না এবং প্রোগ্রামার আরও অর্থপূর্ণ নাম চয়ন করতে বাধ্য হয়।

বুলিয়ান ভেরিয়েবলের সেটার পদ্ধতিতে অবশ্যই উপসর্গ সেট করা থাকতে হবে:

void setFound(boolean isFound);

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

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

7
সুতরাং যদি এখানে বুলিয়ান সম্পত্তি থাকে hasDataতবে সেটারটি দেখতে কেমন হবে? খুব অবশ্যই setData(bool hasData)আমার কাছে ভীষণ ভুল মনে হচ্ছে ...
ফ্রেঞ্চ বি।

7
@FranzB। আমি setHasData (...) ব্যবহার করব
ব্যবহারকারীর 212178

2
যারা করতে চান JavaBeans specifcation অনুসরণ জন্য, এটি মনে হচ্ছে যে has, can, shouldউপসর্গ স্পেসিফিকেশন অংশ নয়। রেফারেন্স জাভাবিয়ান স্পেসিফিকেশন 1.01 বিভাগ 8.3।
ভিসিডি

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

1
সেটারটি সহজবোধ্য, আমাকে যেভাবে boolean isIsCurrent(){...}প্রযোজকটি ব্যবহার করতে হয়েছিল তা অন্যথায় অবজেক্টটির বিশৃঙ্খলকরণের জন্য ব্যবহৃত ফ্রেমওয়ার্কটি অভিযোগ করছিল getter not found for property isCurrent
মরিজিও লো বসকো

67

নামে একজন ক্ষেত্রের জন্য isCurrent, সঠিক সংগ্রহকারী / সেটার নামকরণ হয় setCurrent()/ isCurrent(), যা অত্যন্ত বিভ্রান্তিকর হয় এবং প্রধান সমস্যা ফিরে আঁকা করা যেতে পারে (যে কি অন্ধকার মনে হচ্ছে অন্তত):

আপনার ক্ষেত্রটি isCurrentপ্রথম স্থানে কল করা উচিত নয় । অর্থাৎ একটি ক্রিয়াপদ এবং ক্রিয়া একটি বস্তু রাষ্ট্রীয় প্রতিনিধিত্ব করতে অনুপযুক্ত। পরিবর্তে একটি বিশেষণ ব্যবহার করুন, এবং হঠাৎ আপনার গেটর / সেটারের নামগুলি আরও অর্থবোধ করবে:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}

4
বুলিয়ান আদিম না হলে কী হবে? এটি যদি বুলিয়ান হয় তবে এটি পাওয়া উচিত নাকি?
অরুণ

2
না, এই জাতীয় পদ্ধতি নাল ফিরতে পারে, যার ফলে নুলপয়েন্টার এক্সসেপশন হয়। তবে আমি প্রথমে বুলিয়ান ফিরে না এড়াতে চেষ্টা করব
সান প্যাট্রিক ফ্লয়েড

3
@ অরুন আমি মনে করি এটি সেট করা উচিত / পরিবর্তে যদি সেট করা হয় তবে এটি বুলিয়ান হ'ল আদিম পরিবর্তে একটি বস্তু, কারণ এটির 3 টি পরিসংখ্যান রয়েছে, মিথ্যা, সত্য বা নাল।
আল-মোতাহাফার 1:58

1
ব্যবহার করার IntelliJ অক্ষমতা getউপসর্গ যখন একটি পুনরুদ্ধারের Booleanবনাম isএকটি জন্যboolean
jocull

1
জাভাবিসের স্পেসিফিকেশন অনুসারে @ জোকুল এবং এটিই সঠিক আচরণ
সান প্যাট্রিক ফ্লয়েড

6

আমি বিশ্বাস করি এটি হবে:

void setCurrent(boolean current)
boolean isCurrent()

1
আমি সেই কনভেনশনটি পছন্দ করি তবে কনভেনশনগুলিতে আসলে কিছু যায় আসে না। সবচেয়ে গুরুত্বপূর্ণ হ'ল আপনি যা পছন্দ করেছেন তার সাথে লেগে থাকা stick
ক্লিমেন্ট হেরেমান

4
@Clement কনভেনশন কি যখন আপনি সরঞ্জাম যে এই নিয়মাবলী ব্যবহার করেন তার উপর নির্ভর ব্যাপার। জাভাবিয়ান একটি প্রচলিত লাইব্রেরিতে বিস্তৃত সমর্থন সহ একটি সম্মেলন (জেএসপি / জেএসএফ / স্প্রিং / গ্রোভি মাত্র কয়েকটি নাম দেওয়ার জন্য)। সম্মেলনগুলি ভঙ্গ করার অর্থ এই লাইব্রেরিগুলির কাজ করার উপায় ভঙ্গ করা।
সান প্যাট্রিক ফ্লয়েড

1
@ সিয়ান রাইট, ফ্রেমওয়ার্কের জন্য ব্যতীত যা কনফিগারেশনের উপর কনভেনশনগুলির উপর নির্ভর করে। এই ক্ষেত্রে সম্মেলনগুলি কাঠামোর দ্বারা আরোপিত হয়, তাই আপনি কোনও কিছুই পছন্দ করেন না। ভাল মন্তব্য।
ক্লিমেন্ট হেরেম্যান

5

সম্ভবত এই উত্তরটি সংশোধন করার সময় এসেছে? ব্যক্তিগতভাবে আমি ভোট দেবে setActive()এবং unsetActive()(বিকল্প হতে পারে setUnActive(), notActive(), disable(), ইত্যাদি প্রসঙ্গ উপর নির্ভর করে) যেহেতু "setActive" বোঝা আপনি এটা সব সময়, যা আপনি না এ সক্রিয় করুন। "সেটএ্যাকটিভ" বলতে আসলে এটি সক্রিয় অবস্থাকে সরিয়ে ফেলা এক ধরণের পাল্টা স্বজ্ঞাত।

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

মার্টিন ফওলারের ফ্ল্যাগআরগমেন্ট নিবন্ধটি এ সম্পর্কে একটি ভাল পঠন: http://martinfowler.com/bliki/FlagArgument.html

তবে আমি পিএইচপি ব্যাকগ্রাউন্ড থেকে এসেছি এবং আরও দেখি যে এই প্রবণতাটি আরও বেশিভাবে গৃহীত হচ্ছে। জাভা বিকাশের সাথে এটি কতটা বেঁচে আছে তা নিশ্চিত নয়।


-1
private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}

3
বর্তমান কি আছে? আমি মনে করি যে hasPOJO এর সময় এমন কিছু প্রসেসিং সহ বিও বা এই জাতীয় পরিষেবার জন্য ব্যবহৃত হয় is। এবং আপনার উত্তর সম্পর্কে কিছু বিবরণ যোগ করুন।
আল-মোতাহাফার

-3
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

বুলিয়ানগুলির জন্য আপনিও ব্যবহার করতে পারেন

public boolean isCurrent()

11
কারণ ওপি বুলিয়ান মান সম্পর্কে একটি প্রশ্ন জানিয়েছে। 'গেট' সহ উপস্থাপিত একটি গিটার হ'ল (পড়ুন: হওয়া উচিত) কখনই বুলিয়ান মানগুলির জন্য ব্যবহৃত হয় না।
হ্যারল্ড

-4

সেটার হিসাবে, কীভাবে:

// setter
public void beCurrent(boolean X) {
    this.isCurrent = X;
}

অথবা

// setter
public void makeCurrent(boolean X) {
    this.isCurrent = X;
}

আমি নিশ্চিত নই যে এই নামকরণগুলি স্থানীয় ইংরেজী স্পিকারগুলিতে বোঝা যায়।


1
তারা সত্যিই
বোধশক্তি

তবে ফোনেটিক্যালি কিছু গুণাবলীর সাথে আশাব্যঞ্জক শব্দগুলি শোনাচ্ছে :)
seba.wagner
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.