Örneğin.
boolean isCurrent = false;
Alıcısına ve ayarlayıcısına ne isim veriyorsunuz?
Örneğin.
boolean isCurrent = false;
Alıcısına ve ayarlayıcısına ne isim veriyorsunuz?
Yanıtlar:
Varsayalım
boolean active;
Erişimciler yöntemi
public boolean isActive(){return this.active;}
public void setActive(boolean active){this.active = active;}
Ayrıca bakınız
hasCustomName
, Şimdi onun alıcı ve ayarlayıcı yöntemleri için ne isim vermeliyim ? Mı setHasCustomName[setter]
ve hasCustomName[getter]
iyi?
public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
http://geosoft.no/development/javastyle.html#Specific
is
Boole değişkenleri ve yöntemleri için önek kullanılmalıdır.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Bu, Java'nın çekirdek paketleri için Sun tarafından kullanılan mantıksal yöntemler ve değişkenler için adlandırma kuralıdır . İs önekini kullanmak, durum veya bayrak gibi kötü boole adlarını seçme konusunda sık karşılaşılan bir sorunu çözer. isStatus veya isFlag basitçe uymuyor ve programcı daha anlamlı isimler seçmeye zorlanıyor.
Boole değişkenleri için ayarlayıcı yöntemlerin öneki aşağıdaki gibi ayarlanmış olması gerekir:
void setFound(boolean isFound);
Bazı durumlarda daha iyi uyan is önekinin birkaç alternatifi vardır. Bunlar ön eklere sahiptir, olabilir ve olmalıdır:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
hasData
, ayarlayıcı nasıl görünür? Kesinlikle, setData(bool hasData)
benim için çok yanlış görünüyor ...
has
, can
, should
önekler özelliklerinin bir parçası değildir. Referans JavaBeans Özellikler 1.01 bölüm 8.3.
boolean isIsCurrent(){...}
başka türlü kullanmak zorunda kaldım , nesneyi serileştirmek için kullanılan çerçeve şikayet ediyordu getter not found for property isCurrent
.
Adlandırılmış bir alan için isCurrent
, doğru alıcı / ayarlayıcı adlandırma setCurrent()
/ isCurrent()
(en azından Eclipse'in düşündüğü şey), son derece kafa karıştırıcı ve ana soruna kadar izlenebilir:
isCurrent
Öncelikle alanınız çağrılmamalıdır . Is bir fiildir ve fiiller bir Object'in durumunu temsil etmek için uygun değildir. Bunun yerine bir sıfat kullanın ve aniden alıcı / ayarlayıcı adlarınız daha anlamlı olacaktır:
private boolean current;
public boolean isCurrent(){
return current;
}
public void setCurrent(final boolean current){
this.current = current;
}
get
bir alınırken önek Boolean
vs is
for aboolean
Ben inanıyorum olurdu:
void setCurrent(boolean current)
boolean isCurrent()
Belki de bu cevabı gözden geçirmenin zamanı gelmiştir? Şahsen ben oy vereceğini setActive()
ve unsetActive()
(alternatifler olabilir setUnActive()
, notActive()
, disable()
"setactive" beri, vb bağlama göre) ima bunu değil mi her zaman en etkinleştirin. "SetActive" demek sezgisel bir durum ama aslında aktif durumu kaldır.
Başka bir sorun, özellikle bir SetActive olayını CQRS yoluyla dinleyememeniz, bir 'setActiveEvent' dinlemeniz ve içinde dinleyici kaynağının gerçekten etkin olup olmadığını belirlemeniz gerekir. Veya elbette, arama yaparken hangi olayı arayacağınızı belirleyin, setActive()
ancak daha sonra Endişelerin Ayrılması ilkesine aykırıdır.
Bununla ilgili iyi bir okuma Martin Fowler'ın FlagArgument makalesi: http://martinfowler.com/bliki/FlagArgument.html
Ancak, bir PHP arka plan geliyor ve bu eğilim giderek daha fazla kabul görüyorum. Bunun Java geliştirme ile ne kadar yaşadığından emin değilim.
private boolean current;
public void setCurrent(boolean current){
this.current=current;
}
public boolean hasCurrent(){
return this.current;
}
has
POJO için ise BO veya bazı işleme ile böyle bir hizmet için kullanılan düşünüyorum is
. ve lütfen cevabınızla ilgili biraz açıklama ekleyin.
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()
Booleans için şunları da kullanabilirsiniz:
public boolean isCurrent()
Bir ayarlayıcı olarak, nasıl:
// setter
public void beCurrent(boolean X) {
this.isCurrent = X;
}
veya
// setter
public void makeCurrent(boolean X) {
this.isCurrent = X;
}
Bu adlandırma ana dili İngilizce olan kişiler için anlamlı olup olmadığından emin değilim.