实例化对象速记

时间:2011-08-31 05:26:27

标签: c#

我想知道这是一个愚蠢的问题,不管是什么......

考虑:

this.dataSourceFacade = new DataSourceFacade();

this.SomeGrid.DataSource = this.dataSourceFacade.GetData();

与之比较:

this.SomeGrid.DataSource = new DataSourceFacade().GetData();

第二种方法有什么问题,假设它是唯一被使用的地方吗?

理查德

4 个答案:

答案 0 :(得分:0)

第二种方法,

this.SomeGrid.DataSource = (new DataSourceFacade()).GetData();

如果您以后需要它,您将失去对DataSourceFacade对象的引用,例如设置其他东西,获取其他东西,或调用该对象的方法。

答案 1 :(得分:0)

从长远来看,它确实使代码更易于阅读和维护。这也应该是“好”。

但是,您只是为了调用对象的一个​​方法而创建对象的实例,我会质疑是否可以将该方法拉出到静态方法中。

像这样:

this.SomeGrid.DataSource = DataSourceFacade.GetDate();

同样在静态实现中,我会尝试不实例化不会使用的对象实例,如果可能的话。

答案 2 :(得分:0)

好吧,我个人喜欢单元测试,这两种方法都会限制你这样做的能力。

至少我会创建一个工厂来做这样的事情

this.SomeGrid.DataSource = DataSourceFacade.GetDataSource();

this.SomeGrid.DataSource = DataSourceFacade.Factory.GetDataSource()

至少通过这种方式,您可以添加以后以某种方式更新工厂以进行测试的功能。

答案 3 :(得分:0)

简短而简单:第二种方法没有任何问题...在大多数情况下甚至更好,因为更干净(没有不必要的局部变量),更好地阅读+维护: - )