良好的软件实践 - 获取和设置方法

Sin*_*nan 2 java coding-style

正如您所看到的,下面的类声明了2个私有实例变量和2个与每个私有成员关联的get和2 set方法,以允许对它们进行操作和验证.

我的问题是:最好在构造函数减速中使用,实例变量直接如下面的代码片段所示,或者使用与它们相关联的set方法,以及促进在toString方法中使用的良好软件实践,实例变量或它们的getter方法?

感谢您的时间.

public Class Employee {

  private String firstName;
  private String lastName;

  public Employee (String first, String last)
  {
    firstName = first;
    lastName = last;
  }//end of constructor

  public void setFirstName(String first)
  {
    firstName = first;
  }//end of method setFirstName

  public String getFirstName()
  {
    return firstName;
  }

  public void setLastName(String last)
  {
    lastName = last;
  }//end of method setLastName

  public String getLastName()
  {
    return lastName;
  }//end of method getLastName

  public String toString()
  {
    return String.format ("%s: %s %s\n", "Employee Name: ", firstName, lastName);
  }//end of method toString

}//end of class Employee
Run Code Online (Sandbox Code Playgroud)

Bri*_*new 5

我倾向于通过构造来支持初始化.通过使用此方法并提供适当的检查(final通过null检查或类似的编译时间和运行时),您可以确保您的对象被正确和完全实例化.

final在字段上使用关键字将使编译器检查您在构造时是否已为该字段指定了值.它确实意味着该字段是不可变的,但令人惊讶的是您经常需要它.

我会小心为所有东西提供吸气剂.如果您不断提供和使用getter,则表明您正在从对象中提取数据并在该对象之外对其进行操作.请记住 - 面向对象的一个关键原则是让对象为您做事,而不是向他们询问数据并自己做.