如果我需要做这样的事情:
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);
答案 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收集它!因此,将新的初始化对象存储在变量中没有坏处,并且在另一行中声明它们会使代码更具可读性。