公共财产的一个真实例子是糟糕的

时间:2016-06-20 15:11:50

标签: java oop conventions

无数次我都读到课堂上的公共财产是一个重要的失误,但我不明白为什么数据没有变换进/出。

我要写的东西的例子

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

1 个答案:

答案 0 :(得分:4)

想象一下,您的代码已投入生产。我编写了一个前端,它使用直接访问firstNamelastName的Employee类。

6个月过去了,现在有了新的业务要求,您需要在名称字段中添加验证。

你要在哪里添加它?您将不得不将字段设为私有并添加set方法,这将迫使我和其他所有人使用您的代码重新编写我们的应用程序。

如果您首先正确封装了这些数据,那么我们所要做的就是使用您的代码使用新版本的库重新编译。

相关问题