我写了这两个修正矩形。例如,如果一个矩形具有以下属性:哪些代码更干净,更快,还是更优雅?有没有这样做的功能?
X:32,Y:32,宽度:-32,身高:-32
这将使矩形X:0,Y:0,宽度: 32,身高:32
if (r.Width < 0)
{
r.X -= Math.Abs(r.Width);
r.Width = Math.Abs(r.Width);
}
if (r.Height < 0)
{
r.Y -= Math.Abs(r.Height);
r.Height = Math.Abs(r.Height);
}
这里是#2
r.X -= Math.Abs(Math.Min(0, r.Width));
r.Width = Math.Abs(r.Width);
r.Y -= Math.Abs(Math.Min(0, r.Height));
r.Height = Math.Abs(r.Height);
他们都工作得很好。我的问题是哪个?我觉得第一个可能更快,更可读,但第二个更少的代码行。另外,我觉得这是可能已经发明的东西。有没有一种方法可以在.NET或XNA Framework中实现呢?
谢谢!
编辑:有人贴的,我真的很喜欢第二路的缩短版,并将其合并到这个:
r = new Rectangle(r.X + Math.Min(0, r.Width), r.Y + Math.Min(0, r.Height), Math.Abs(r.Width), Math.Abs(r.Height));
老实说,我宁愿少线路更多,我不认为这是太复杂了。如果有任何事情,我可以发表评论或将其封装到具有描述性名称的方法中。
我同意你的程度。是的,我认为上面的例子更清晰可读,但这是一个独立的项目,任何人都不会看到。无论哪种方式,我理解的代码,如果我在一条线上,我真的不必看它或考虑它。这有点像将某些东西封装到一个类中。你可以忽略它,忘记它并思考其他事情。当然这种行为可以通过将上面的代码放入一个方法并给它一个描述性名称来模拟,我也不一定反对。 –
是的,第二个想法,我想我会与您的代码在您的帖子的顶部,并将其放置到一个方法。谢谢! –
够公平 - 我尽可能缩短开发代码的编码 - 但是我打了它,因为其他人会看到我的代码(我会计算未来我在这方面忘记了代码如何作为另一个人的作用)。 –