2013-12-16 54 views
3

我在一个新的对象中有一个实例变量,我编码几乎总是有一定的值。在这种情况下,它的“N”。将默认值硬编码为String实例变量是否可行?可以硬编码实例变量的默认值吗?

private String aBusinessSwitch= "N"; 

后来在一个方法我有一个if条件,将只在少数罕见的情况下将该值设置为一个“Y”。

它会更好不要硬编码的“N”当我宣布领域,而不是添加默认值elseif声明,将其设置为“N”

if (isCold) {aBusinessSwitch = "Y"; } 
    else {aBusinessSwitch = "N"; } 
+4

'String'可以有多少个值?也许'String'不是合适的类型。 –

+4

它看起来像你的代码是“字符串型”。你为什么不使用布尔值? –

+0

我已经删除了一些“硬编码字符串”焦点;更多的也可以被删除。这个问题可能是关于大多数任何类型的问题,问题是相同的:*“当我声明该字段时,不是[指定]默认值会更好,而是在我的if语句中添加其他字符来设置它?”* – user2864740

回答

2

直接的答案是'这是皱眉,除非你需要能够存储几乎无限多种价值'。

你需要两个以上的值吗?如果不是,请考虑布尔值。如果是,请考虑枚举。如果您需要的值接近无限,则可以使用字符串。

如果您选择为此目的使用字符串,您的程序仍然可以很好地工作。但是,请始终记住,每一个给代码增加复杂性的地方,都会有更多的机会出现问题,并且在将来会带来可维护性挑战。

2

使用布尔在这种情况下?枚举,如果你需要更多比是的&没有。

0

是使用布尔型或常规实例变量,枚举最适合大量的值。

1

正如其他人所指出的,在String中使用“N”和“Y”提示是错误的类型,布尔或Enum可能是更好的选择。但是这并不能回答你的问题。

我不会使用一个默认值,因为它分裂了逻辑在两个地方如何确定这个值。如果你只在一个地方设置它,如果这个地方在构造函数中,你甚至可以使它成为final,这使代码变得简单一些。

+0

+1用于阅读问题。 – user2864740

相关问题