为每个条件定义变量比使用getter和setter更好吗?

时间:2017-01-07 07:17:40

标签: java

我有两个代码可以告诉我哪种方法更好,为什么。

方法1 -

if (("Male").equalsIgnoreCase(input.getSex()) || ("Female").equalsIgnoreCase(input.getSex())) {
    // do something
}else{
   //do somethong
}

方法2 -

String tempSex = input.getSex()
if (("Male").equalsIgnoreCase(tempSex) || ("Female").equalsIgnoreCase(tempSex)) {
    // do something
}else{
    //do somethong
}

这是一个条件,在我的代码中,我有很多类似于这个的条件。在某些情况下,我必须与更多的字符串进行比较。

这是为每个条件定义变量的好方法,还是我可以使用getter和setter?

2 个答案:

答案 0 :(得分:1)

这两种方法在性能方面基本相同,假设getSex函数是一个微不足道的getter(如果getSex很复杂或涉及更改类中的其他一些状态,则这两位代码不等效)。

从样式的角度来看,我更倾向于第一个,因为额外的局部变量对代码流有点混淆。

但是,如果您的主要目的是使用此表单的代码来验证合法输入(从您的示例中显示)我会尝试创建一个方法 boolean input.isSexValid()封装了使代码重复性更低,可读性更强的功能。

答案 1 :(得分:-1)

强烈论证这主要是基于意见的,但是:

我投票方法2。

如果吸气剂很慢(比如必须转到数据库)怎么办?您有一个DB的冗余往返。