C# 我应该完全申报丢弃的物品吗?

C# 我应该完全申报丢弃的物品吗?,c#,declaration,throwaway,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 Co

如果我需要这样做:

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);

首先,我是一个Java人,我没有使用过C# 但基于您的代码和与java的相似性,我可以说-

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


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

首先,我是一个Java人,我没有使用过C# 但基于您的代码和与java的相似性,我可以说-

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


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

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

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

您的
连接
类是否实现了
IDisposable
?然后:

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

您的
连接
类是否实现了
IDisposable
?然后:

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

您越详细,调试就越容易

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

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

transactionTime = generationTime + retrievalTime + processingTime + loggingTime
这里我们有一个更复杂的想法,我们恰好用一行字来表达:

logTransactionData(processTransaction(retrieveTransaction(generateTransactionQuery())))
我认为第一个示例比第二个示例更容易一眼就能理解,尽管它们的字符长度大致相同


一般来说:考虑你需要调试这条线的可能性,以及你的思想复杂度和线比。

< P>你越冗长,你调试的时间就越容易。 对代码可读性的影响实际上取决于你试图在一行中包含多少内容——如果你有一个想法,需要用很多不同的词来表达,那么在我看来,把它放在一行并不是什么大问题。但是,如果你试图把多个想法塞进一行,你就会失去清晰度

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

transactionTime = generationTime + retrievalTime + processingTime + loggingTime
这里我们有一个更复杂的想法,我们恰好用一行字来表达:

logTransactionData(processTransaction(retrieveTransaction(generateTransactionQuery())))
我认为第一个示例比第二个示例更容易一眼就能理解,尽管它们的字符长度大致相同


一般来说:考虑你需要调试这条线的可能性,以及你的思想复杂度对线比的影响。

除非这是一个超级紧的循环,有大量的<代码>其他主机< /代码>。我会说多个对象的问题是一个早熟的问题。optimization@Earlz:对我来说,这听起来像是过早的“过早优化”资格。不管您怎么想,在任何类型的方法中,创建一个对象三次(一次就足够了)都是完全浪费的。我觉得“不要过早地优化”中的许多思想学派走到了另一个极端:除非有人抱怨浪费,否则不要在意浪费。除非这是一个超级紧密的循环,有大量的
otherHosts
,否则我认为多对象问题还为时过早optimization@Earlz:对我来说,这听起来像是过早的“过早优化”资格。不管您怎么想,在任何类型的方法中,创建一个对象三次(一次就足够了)都是完全浪费的。我觉得“不要过早优化”学派的许多人走到了另一个极端:除非有人抱怨,否则不要在意浪费。你甚至可以做
新连接(另一个主机)。执行(Commands.Create)
(即,没有括号),这看起来更流畅、更酷。你甚至可以做
新连接(另一个主机)。执行(Commands.Create)
(即,没有括号),这看起来更流畅、更酷。我甚至没想过要试试。