我寫了這兩個修正矩形。例如,如果一個矩形具有以下屬性:哪些代碼更乾淨,更快,還是更優雅?有沒有這樣做的功能?
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));
老實說,我寧願少線路更多,我不認爲這是太複雜了。如果有任何事情,我可以發表評論或將其封裝到具有描述性名稱的方法中。
我同意你的程度。是的,我認爲上面的例子更清晰可讀,但這是一個獨立的項目,任何人都不會看到。無論哪種方式,我理解的代碼,如果我在一條線上,我真的不必看它或考慮它。這有點像將某些東西封裝到一個類中。你可以忽略它,忘記它並思考其他事情。當然這種行爲可以通過將上面的代碼放入一個方法並給它一個描述性名稱來模擬,我也不一定反對。 –
是的,第二個想法,我想我會與您的代碼在您的帖子的頂部,並將其放置到一個方法。謝謝! –
夠公平 - 我儘可能縮短開發代碼的編碼 - 但是我打了它,因爲其他人會看到我的代碼(我會計算未來我在這方面忘記了代碼如何作爲另一個人的作用)。 –