1

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

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

4 回答 4

3

你的Connection班级实施了IDisposable吗?然后:

using (var connection = new Connection(host))
{
    connection.Execute(Commands.Delete);
}
于 2010-07-30T04:42:25.877 回答
1

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

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

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

于 2010-07-30T04:39:07.857 回答
1

您越冗长,调试就越容易。

对代码可读性的影响实际上取决于您尝试将多少包装到一行中-如果您有一个需要很多不同单词来表达的单一想法,那么将其放在一行中并不是什么大问题在我看来处理。但是,如果你试图将多个想法塞进一行,你就会失去清晰度。

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

transactionTime = generationTime + retrievalTime + processingTime + loggingTime

在这里,我们有一个更复杂的想法,我们恰好用一行来表达:

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

我认为第一个示例一目了然比第二个示例更容易理解,即使它们的字符长度大致相同。

所以总的来说:考虑你需要调试线路的可能性,以及你的想法复杂度与线路的比率。

于 2010-07-30T04:53:19.327 回答
0

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

于 2010-07-30T04:40:58.050 回答