在《sam Teach Yourself Java》这本书中,作者经常在构造函数中编写一堆代码,并将主块放在其外部,然后在主块中调用构造函数。这样做有什么好处,而不是像有些人那样在主块内编写代码?
的例子:
import java.io.*;
import java.util.*;
class Configurator {
Configurator() {
try {
// load the properties file
File configFile = new File("program.properties");
FileInputStream inStream = new
FileInputStream(configFile);
Properties config = new Properties();
config.load(inStream);
// create a new property
Date current = new Date();
config.setProperty("runtime", current.toString());
// save the properties file
FileOutputStream outStream = new
FileOutputStream(configFile);
config.store(outStream, "Properties settings");
inStream.close();
config.list(System.out);
} catch (IOException ioe) {
System.out.println("IO error " + ioe.getMessage());
}
}
public static void main(String[] arguments) {
Configurator con = new Configurator();
}
}
就构造函数的质量而言,还有其他答案/评论解释了为什么这是一个坏主意。关于将所有的代码放在构造函数中而不是直接放在main
中,当涉及到自动化测试和可移植性时,它有好处。
将所有代码移动到构造函数中,可以让代码通过自动化测试框架进行测试,这比测试main
要容易得多。此外,通过将整个应用程序放在一个没有main的类中,您可以将其提取并在其他应用程序中使用。
那本书因写得太差而臭名昭著。但是在构造函数中有很多代码,构造函数的目的是"构造"一个对象,比如设置对象的值等。不执行那么多任务,而是在类中创建构造函数可以调用的方法。
例如,main是一个静态方法,它只需要静态变量,因此在