传销员的正确格式

时间:2019-04-05 12:40:45

标签: java javabeans

在过去的四年中,我一直将Java开发作为一种爱好,并且对Java Bean设置方法的约定很感兴趣。

如果我使用Eclipse生成设置器,我将得到:

 [EnableCors("WithExposedContentDispositionHeader")]
 public async Task<IActionResult> GetExcelReport([FromQuery] ReportInput input) {...}

现在我了解它是如何工作的,但是对我(作为一个旧的开发者)来说,具有两个具有相同名称但标识不同对象的变量是令人困惑的。我发现您是否拼错了参数变量,例如bar仍然可以编译但不起作用;

我倾向于使用:

private String var;

public void setVar(String var){
 this.var = var;
}

任何人都可以解释这两种方法是否有效率或优势。

3 个答案:

答案 0 :(得分:1)

  

任何人都可以解释这两种方法是否有效率或优势。

这完全是风格问题。此处有两个样式,它们之间相互关联:

  1. 具有相同名称的实例变量(字段)和参数。

  2. 在访问实例变量(或方法)时放弃this.

使用相同的名称会强制您使用this.,但是使用不同的名称并不意味着您不能使用this.,这就是为什么它们是相互独立但相互联系的样式问题的原因。

所有这些都是有效的选择(假设实例变量声明),并且就编译器所做的工作而言,使用哪种都没有区别:

// 1
public void setVar(String var) {
    this.var = var;
}

// 2
public void setVar(String varp) {
    var = varp;
}

// 3
public void setVar(String varp) {
    this.var = varp;
}

这对可维护性等有所不同,但这取决于样式,这取决于您和/或您正在处理的项目的样式指南。

答案 1 :(得分:0)

任何一种方法都没有优势。 编译的代码是相等的。

为防止意外设置参数var而不是this.var,将final添加到(所有)参数是个好习惯。

public void setVar(final String var) { 
    this.var = var; 
    // var = var; // fails, because var cannot be set again.

答案 2 :(得分:0)

重复变量名是可以理解的。以获得更清晰的获取和设置方式

public class test{
   private String name;

   public void setVar(String name){
     name = name;
   }
}

当您尝试设置该值时,并具有如上所述的表达式。

test t1 = new test();
t1.setVar("myValue"); 

代码要做的是

 t1.name = myValue;

如果要创建和操作用于类测试的多个对象,则由于访问私有变量并为其分配了值,分配将变得混乱。

您要做的是确保仅保留对象所保存的变量实例。因此,您添加

public class test{
   private String name;

   public void setVar(String name){
     this.name = name;
   }
} 

现在,类测试t1,t2等的每个实例都将仅对其对象进行操作。纯粹出于可维护性,传递的变量的命名与我们要为其分配值的变量的命名保持相同。