Java 一个人应该在构造函数中放入多少代码?
我在想在Java的构造函数中应该放多少代码?我的意思是,通常你会创建助手方法,在构造函数中调用,但有时会有一些较长的初始化过程,例如,对于一个从文件中读取的程序,或者用户界面,或者其他程序,在这些程序中,你不会只初始化实例变量,在这些实例变量中,构造函数可能会变长(如果你不使用helper方法)。我认为构造函数通常应该简短,不是吗?有例外吗?如果你遵循原则,每个类应该有一个改变的理由(即做一件事)。因此,构造函数通常不会读取文件,但您将有一个单独的类从文件中构建对象。完成对象初始化所需的最小值 如果您可以将构造器的一部分(我的指导原则是5行左右)作为一块逻辑或一个特定的过程来讨论,那么为了清晰和组织的目的,最好将其拆分为一个单独的方法Java 一个人应该在构造函数中放入多少代码?,java,constructor,Java,Constructor,我在想在Java的构造函数中应该放多少代码?我的意思是,通常你会创建助手方法,在构造函数中调用,但有时会有一些较长的初始化过程,例如,对于一个从文件中读取的程序,或者用户界面,或者其他程序,在这些程序中,你不会只初始化实例变量,在这些实例变量中,构造函数可能会变长(如果你不使用helper方法)。我认为构造函数通常应该简短,不是吗?有例外吗?如果你遵循原则,每个类应该有一个改变的理由(即做一件事)。因此,构造函数通常不会读取文件,但您将有一个单独的类从文件中构建对象。完成对象初始化所需的最小值
但每个人都有自己的。构造函数应该足够长,但不再=) 如果要定义多个重载构造函数,请不要重复代码;相反,将功能整合到其中一个,以提高清晰度和易于维护。正如Knuth所说,“过早优化是万恶之源。”
你应该给建筑工人投多少钱?你需要的一切。这就是“急切”的方法。当-只有当-性能成为一个问题时,你是否考虑优化它(对“懒惰”或“过度热切”的方法)。尽管另一个是C++,但是概念仍然非常相似。构造函数应该创建对象的最简单、通用的实例。多普通?选择从类继承的每个实例或对象必须通过才能有效的测试用例-即使“有效”仅表示正常失败(编程生成的异常) 维基百科有一个很好的描述:
一个有效的对象是构造函数的目标,有效的对象不一定有用——这可以通过初始化方法来实现。我的习惯做法是,如果构造函数只需要在对象上设置一些字段,那么它可以任意长。如果它变得太长,这意味着类设计无论如何都被破坏了,或者数据需要打包到一些更复杂的结构中
另一方面,如果在初始化类字段之前,输入数据需要一些更复杂的处理,我倾向于将处理后的数据交给构造函数,并将处理移到静态工厂方法。您的类可能需要初始化到某个状态,然后才能使用它完成任何有用的工作 想想这个
public class CustomerRecord
{
private Date dateOfBirth;
public CustomerRecord()
{
dateOfBirth = new Date();
}
public int getYearOfBirth()
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateOfBirth);
return calendar.get(Calendar.YEAR);
}
}
现在,如果不初始化dateOfBirth成员variable,则任何后续的getYearOfBirth()调用都将导致NullPointerException
因此,最简单的初始化可能涉及
性能通常不是问题;维修是!我不确定避免过早优化是否意味着避免过早维护优化…是的,我不认为这个问题与性能有关。。。这更多的是关于设计适当的代码,它是可维护的,并且易于其他人理解。是的,编写可维护代码的最好方法是直接编写(即渴望)。性能缓存往往会使代码变得非常复杂,如果性能不是一个问题,则会适得其反。另请参阅