English 中文(简体)
如果所有行动都必须在任何方面进行,以书面方式开展一套行动是否有什么好处?
原标题:Is there any advantage in writing a set of operations in a single line if all those operations have to occur anyway?
  • 时间:2009-08-25 09:29:59
  •  标签:

从并入后的角度(而不是从编码的辛加税角度),在C#中,汇编的代码在一行的一套业务与跨越多个线的一套业务之间是否有任何实际差别?

......

object anObject = new object();
anObject = this.FindName("rec"+keyPlayed.ToString());
Rectangle aRectangle = new Rectangle();
aRectangle = (Rectangle)anObject;

vs this.

Rectangle aRectangle = (Rectangle)this.FindName("rec"+keyPlayed.ToString());

我不禁要问,因为似乎有一种观点认为,使用的线路数量最少,但我想理解的是,这是否是因为有明显的技术效益,或者在某个时候有实际好处,或者是否确实是出于可量化的理由?

最佳回答

线数不成问题;如果代码相同,则电离辐射法相同(isn)。

实际上,除非我们知道什么是<代码>FindName的回归,否则我们就能够适当地回答——因为通过投到<条码>。 您可能会引入“箱子”操作,并且您可能会将convert操作(或也许是一种被动的绝缘)改为主动的双播种(转播至object,投到Rectangle)。 现在,Ill假设:FindName 回归object,简单明了。 如果你使用<代码>var,我们就知道你的代码没有改变类型(方框/插文/等):

var anObject = this.FindName("rec"+keyPlayed.ToString());

在释放模式中(在最佳情况下),汇编者将消除设定并随后立即使用的多数变量。 以上两行之间最大的区别是,第二版的斜线形成和弃置<条码>新物体(和newtang Recle()。 但是,如果你没有这样做的话,那么该守则就会是等同的(假定:FindName 回归object):

object anObject;
anObject = this.FindName("rec"+keyPlayed.ToString());
Rectangle aRectangle;
aRectangle = (Rectangle)anObject;

如果您重新使用变量(在这种情况下,汇编者一定可以删除),如果该变数为“捕获”,则存在一些微妙之处。 如果汇编者/独立信息技术公司选择在登记册中进行纯粹的操作而不将其复制到变数(登记册有不同的(大的)宽度,甚至“固定的”数学,如<代码>float)。

问题回答

我认为,你通常应力求使你的法典尽可能可读,有时这意味着执行你的法典,有时意味着将其放在一行。 目的是重复,如果绩效成为问题,则使用特征分析工具来分析守则,并在必要时加以调整。

编纂成文的法典可能没有任何区别(或许可以优化),但认为可读性也可能是:

举例来说,一条线上的所有东西实际上比一条单独的线更可读。 你试图做的是在那里立即显而易见的。 但其他人可以迅速指出反amp。 因此,利用你的善意判断来决定前进的道路。

http://www.re Factoring.com/catalog/replaceTempWith Query.html” rel=“nofollow noretinger”>prefer a calls to a provisionalerra。 按照这一模式,减少了法典的行文数量,但使得互动的伪造更加困难。

两者不同的主要实际问题是:在进行清点时,按不同方向采取个别步骤,结果将传递给当地变量。

这意味着,你可以通过提供最后结果和看到中间价值的不同法典轨道,采取明确步骤。

当你优化工作时,汇编者将取消这些步骤,提高守则的效率。

Tony

举例来说,实际存在差异,因为你在第一部法典中制造了你不使用的物品和价值。

起草该法典的恰当方式就是:

object anObject;
anObject = this.FindName("rec" + keyPlayed.ToString());
Rectangle aRectangle;
aRectangle = (Rectangle)anObject;

现在,这同单一行文版本之间的区别是,你正在宣布另一个地方变量。 在大多数情况下,汇编者可以优化,以便生成的代码完全相同,即使实际上在生成的法典中使用了另一个地方变量,但与你在该法典中所做的任何事情相比,这仍然是不负责任的。

例如,我认为,单一行文版本更为清晰,但随着更加复杂的法典,它当然可以更明确地分为几个阶段。 当地变量非常便宜,因此,如果守则更加清晰,你就不应犹豫使用某些变量。





相关问题