2011-07-04 97 views
2

這可能不是這個地方,如果是的話,我會道歉並要求你指出我可能適合我的答案。這是我編碼時遇到的一個問題。如何格式化複雜的數學表達式?

new Vector2(parent.Coordinates.X + (Position + parent.Prompt.Length - parent.visibilityIndex) * parent.font.Width, parent.Coordinates.Y); 

這真是一條線!因此,我將它分解爲兩個:

new Vector2(parent.Coordinates.X + (Position + parent.Prompt.Length - parent.visibilityIndex) * parent.font.Width, 
      parent.Coordinates.Y); 

這是一個好一點,但還是太長了。我試圖打破這條界線的任何地方似乎都是隨意的,並且會進一步混淆代碼。我錯了嗎?你是做什麼?再次,我很抱歉,如果這是錯誤的地方,因爲我不確定。

+0

可能會被關閉爲無論是非題材或非建設性的,我不知道。也許這是[programmers.se]合適的編碼風格問題?或者,也許這只是一個低層次的細節? – 2011-07-04 23:27:28

+0

是的,它應該是程序員。 –

回答

4

這是主觀的,但在這種情況下,我會把它分成單獨的變量。

var fontWidth = parent.font.Width; 
var index = parent.visibilityIndex; 
var offset = (Position + parent.Prompt.Length - index) * fontWidth; 
return new Vector2(parent.Coordinates.X + offset, parent.Coordinates.Y); 

將它拆分成最適合您的方式。

1

@Ed S.使用了很多變量,你可以用less來完成。

double x = (Position + parent.Prompt.Length - parent.visibilityIndex); 
x *= parent.font.Width; 
x += parent.Coordinates.X; 
new Vector2(x, parent.Coordinates.Y); 
+0

..但它更容易閱讀。 –

+0

..並使用更多內存。 –

+1

哈哈,是的,這兩個額外的堆棧分配變量是昂貴的!當它成爲瓶頸時告訴我,然後我會同意你的看法。另外,我會要求你在提出索賠前查看拆卸情況。 –

1

我通常只設置一個立柱導軌在80列和第一個運營商我的指南之前找到突破:

new Vector2(parent.Coordinates.X + (Position + parent.Prompt.Length -   | 
    parent.visibilityIndex) * parent.font.Width, parent.Coordinates.Y);  | 

這可能不是最可讀的方式,有時需要一些調整(特別是在必須處理ridiculouslyLongVariableOrMethodNames時),但它爲我完成這項工作。因人而異。

+0

我也添加了列嚮導,但在這個例子中,我現在必須搜索逗號來查看第一個參數結束的位置。我不能說它比原來的例子更具可讀性。 –

+0

@Ed:我不能說我不同意 - 就像我在答案中所說的那樣,它絕對不是最可讀的方法。也就是說,它可能會被調整爲突出顯示逗號 - 例如,也可以突破逗號(儘管事實上不需要休息)。 – Mac