无数次我都读到课堂上的公共财产是一个重要的失误,但我不明白为什么数据没有变换进/出。
我要写的东西的例子
public class Employee
{
public String firstName;
public String lastName;
private int ssn = 0;
public boolean setSsn(String s)
{
//makes perfect sense why something like an ssn would use a getter setter
//some code to validate ssn
if(!validSsn(s)){
ssn = 0;
return false;
}
ssn = raw;
return true;
}
public String getSsn()
{
return ssn;
}
private boolean validSsn(String s)
{
//validation goes here
retrun val;
}
//I don't understand why I should make firstName private
// and then write
public void setFirstName(String s)
{
firstName = s;
}
public String getFirstName(String s)
{
return firstName;
}
}
请提供一个可能导致问题的方案,请具体说明,而不是"因为当其他人使用您的代码时会导致问题"为什么?为什么会引起问题。在此先感谢建设性的批评和详细的答案:D
答案 0 :(得分:4)
想象一下,您的代码已投入生产。我编写了一个前端,它使用直接访问firstName
和lastName
的Employee类。
6个月过去了,现在有了新的业务要求,您需要在名称字段中添加验证。
你要在哪里添加它?您将不得不将字段设为私有并添加set方法,这将迫使我和其他所有人使用您的代码重新编写我们的应用程序。
如果您首先正确封装了这些数据,那么我们所要做的就是使用您的代码使用新版本的库重新编译。