哪种做法更好?关于建设者

时间:2014-11-25 12:24:00

标签: java oop

哪种做法更好,风格明智? 使用关键字"这"或者为构造函数的参数选择不同的参数名称?

情形1:

public class Student {
  //variables
  private String name;

  //constructor
  public Student(String name) { 
    this.name = name;
  }
}

或案例2:

public class Student {
  //variables
  private String name;

  //constructor
  public Student(String aName) { 
    name = aName;
  }
}

5 个答案:

答案 0 :(得分:2)

两种情况都没有区别。这取决于您的偏好。你可以随意做任何事情。

我选择第一种方法。但我没有任何解释来选择那个。因为两者没有任何区别。

答案 1 :(得分:1)

没有“标准”的方式来做到这一点。而且你会发现,在代码的可读性方面,人们在不同的“思维流派”之间存在分歧。

我的建议是使用您组织中最常用的,或者您认为更具可读性的那些。

首先,我更喜欢为参数使用不同的名称,并使用“this”。因为:

    如果您忘记使用“this”,
  • 使用相同的名称会导致轻微的头痛。
  • 使用“this”。很明显,这是一个成员字段而不是局部变量,即使在颜色编码的IDE之外也是如此。

同样,这是你应该做出的个人决定:)

答案 2 :(得分:1)

没有关于好与坏的问题。您可以从两个方便的方式选择任何方式。没有区别。 但我更喜欢case ONE,因为没有必要为一件事记住两个不同的变量名。

答案 3 :(得分:1)

两者之间没有真正的区别。

当我上大学的时候,我学会了用this学习,但是当我去另一所学校时,他们教我用第二种方式做这个,不同的名字用于田野。为了使它变得更加困难,他们甚至教我不要这样做,并在构造函数中使用setter。

我更喜欢与setter结合的第一种方式(因此你可以检查不同的东西或确保以正确的方式存储值,即名称总是以大写字母开头)

我这样做的方法如下:

public class Student {
  //variables
  private String name;

  //constructor
  public Student(String name) { 
    setName(name);
  }

  //setter
  public void setName(String name){
    this.name = name;
  }
}

但你应该选择和使用你最喜欢的方式,因为你就是那个人。

答案 4 :(得分:0)

我更喜欢第一个。它总是可以在不考虑诸如aName之类的新名称的情况下使用。而且,这就是eclipse如何生成setter的方式。