一个好的代码是每个程序员想要编写,优化,健壮,良好的性能,可重用等等。我在面向对象编程中进行了很长时间的编程。我见过很多不同的代码,不同的开发人员使用不同的引用机制。
一些开发人员使用
Classname c = new Classname();
c.method();
c.method2();
等...
虽然一些开发人员使用了以下策略
(new ClassName()).method();
(new ClassName()).method2();
我想知道两者中最好的两个是什么?
答案 0 :(得分:1)
Classname c = new Classname();
c.method();
c.method2();
最好是你要重用你的对象,它在调用方法之前创建一次对象,所以它比
更好(new ClassName()).method();
(new ClassName()).method2();
每次调用方法时,基本上都是创建一个新对象。
考虑一下:
(new ClassName()).getName(); // Returns default value John Doe
(new ClassName()).setName('Steve');
(new ClassName()).getName(); // Returns default value John Doe
Classname c = new Classname();
c.getName(); // Returns default value John Doe
c.setName('Steve');
c.getName(); // Returns Steve
答案 1 :(得分:1)
第二个例子没有意义。它表明ClassName
是无状态的,因此您可以创建方法static
。即使他们需要使用一些构造函数参数(虽然在你的例子中没有),但为什么你要实例化一个对象两次,如果你可以做一次?在微缩模型中,这比仅创建对象一次要慢。它也无法帮助内存管理环境中的垃圾收集器。当然,在大多数情况下,这两个问题可以忽略不计。
我能想象的第二个例子的唯一情况是引导场景,当你在主分区中设置整个应用程序时,启动它:
main()
{
(new Application(...)).Run();
}
只有一个应用程序对象,并且只需要调用一个方法,因此保留其实例的句柄并不重要。另一个例子是,启动一些自定义线程类来执行一些后台操作:
{
(new BackgroundWorkerThread(...)).Start();
}
我从来没有见过以同样的方式调用同一个类中的两个实例方法的理智示例。