2012-09-24 44 views
2

当写布尔getter/setter方法似乎标准给他们写像这样语法布尔getter/setter方法和属性

void setValue(boolean value) { } 

boolean getValue() { return true/false; } 

不过,我已经看到一些使用其中指出getter方法应适当命名根据其用途。

比方说,比如我设置/得到一个所谓的“启用”布尔,应我的getter被称为:

getEnabled() 

isEnabled() 

再让比方说我设置/获得一个布尔值,称为“节点”,如果我的getter被调用:

getNodes() 

hasNodes() 

这只是个人喜好,或者是很好的做法,选择了另一种特定的命名惯例?

+4

'nodes'听起来像一个真正的穷人名一个布尔值。 – BoltClock

+2

我想说这取决于你的个人偏好(或你的团队/雇主的喜好)。但是,我只想说如果我看到过一个'bool getNode()'方法,我会感到困惑... – Alxandr

+1

如果“节点”是布尔值,那么最好使用“isNodes”,但是如果“节点”是集合,然后“hasNodes”更好 – Vytalyi

回答

0

这是(很多)一个为什么我喜欢C#

public bool Enabled 
{ 
    get { return _enabledValue;} 
    set { _enabledValue = value;} 
} 

的原因,它是如此的“自然”对物业叫

myControl.Enabled = true; 
... 

if(myControl.Enabled == true) 
+0

同上,这就是我更喜欢C#的原因......更多语法糖! – series0ne

+0

再次,问题仍然存在,如果此属性被称为启用或IsEnabled? – series0ne

+0

我还是比较喜欢'Enabled'。包含动词是......或者......让我想起了一个动作,同时我想到了一个类的属性 – Steve

4

这个答案假定问题与Java有关:

总是习惯于遵循约定。像Spring这样的一些框架与Java Beans约定紧密结合。

1

在C#属性不是方法。那么,他们是方法,但是一种特殊类型的方法。

你声明一个属性是这样的:

public bool Enabled 
{ 
    get 
    { 
     // return your value 
    } 
    set 
    { 
     // assign your value 
    } 
} 
+1

个人喜好,但我也不喜欢我的属性是verby。如果这是C#,我正在实现这一点,我只是把它命名为“Enabled”。你说得对,它不是一种方法,所以我会回避方法约定,比如动词或动词短语作为名字。 –

+0

不要紧,你已经有一个动词或动词短语的方式。当你说'IsEnabled'时,你指的是事物*当前是否被启用*,而不是(说)是否在过去的某个时刻启用*。 – cHao

0

在Java:

所有getter和setter方法必须至少4个字符长,有一个大写第四个字母。

唯一的例外是获得者booleanBoolean,它可以是3个字母长,并且可以从is开始并且必须具有第三个字符的大写字母。

+1

你的第一行应该说“第四”吗? –

+0

@MarcGravell的确,谢谢。 –

+0

为什么必须让吸气剂和吸附剂的长度至少为4个字符?如果程序不是,程序是否会中断?或者是否应该说“应该”? – series0ne