我应该完全宣布扔掉物品吗?

时间:2010-07-30 04:33:21

标签: c# declaration throwaway

如果我需要做这样的事情:

var connection = new Connection(host);
connection.Execute(Commands.Delete);

这样做有什么不妥:

(new Connection(host)).Execute(Commands.Delete);

第一个示例可能更具可读性,但如果我需要多次执行此操作,则第二个示例会更好:

(new Connection(anotherHost)).Execute(Commands.Create);
(new Connection(someOtherHost)).Execute(Commands.Update);
(new Connection(host)).Execute(Commands.Delete);

4 个答案:

答案 0 :(得分:3)

您的Connection班级是否实施IDisposable?然后:

using (var connection = new Connection(host))
{
    connection.Execute(Commands.Delete);
}

答案 1 :(得分:1)

首先我是一个Java人,我没有使用过C# 但根据你的代码并知道与java的相似性,我可以说 -

如果您的Connection类维护状态信息,则每次创建新对象都有意义。但如果它是无状态的,那么创建多个对象效率非常低。您可以创建一个并重复使用它。

即。如果您在创建后无法将“主机”设置为连接,那么您提到的两种方法都不会有任何区别。

答案 2 :(得分:1)

你越啰嗦,你就越容易调试。

对你的代码可读性的影响实际上取决于你试图包含在一行中的多少 - 如果你有一个想法,只需要很多不同的词来表达,把它放在一行就不是'在我看来,这是一个大问题。但如果你想把多个想法塞进一行,你就会失去清晰度。

例如。我们将从一个简单的想法开始,只需要一些空间来表达:

transactionTime = generationTime + retrievalTime + processingTime + loggingTime

在这里,我们有一个更复杂的想法,我们碰巧在一行中表达:

logTransactionData(processTransaction(retrieveTransaction(generateTransactionQuery())))

我认为第一个例子比第二个例子更容易理解,即使字符长度大致相同。

所以一般来说:考虑调试线路的可能性,以及你的想法 - 复杂性 - 线路比率。

答案 3 :(得分:0)

是的,你正在初始化一个新对象,使用它并丢失它!你不能再重复使用它会在某个地方,直到GC收集它!因此,将新的初始化对象存储在变量中没有坏处,并且在另一行中声明它们会使代码更具可读性。