2012-07-11 81 views
1

我目前正在學習C#,並且我很想從一開始就獲得一種好的編碼風格,所以我希望聽到您的專業人士對此問題的意見。局部變量或直接語句?

你應該總是(或大部分)使用條件/計算(例如2)局部變量還是一樣好/最好直接使用語句(例如1)

例1

if (double.TryParse(stringToParse, out dblValue)) ... 

例2.

bool parseSuccess = double.TryParse(stringToParse, out dblValue); 
if (parseSuccess) ... 

這將是有趣聽聽你的想法和推理,在這個例子。

+2

做你所熟悉的事,當你運行代碼時,它沒有任何區別。當你更熟悉.NET時,你可能會停止使用這些幫助變量。 – 2012-07-11 22:08:09

+0

我認爲這大體上是個人偏好,但通常我會傾向於最易讀的東西,在這種情況下,後者是可讀的。雖然我會使用VAR parseSuccess ...個人 – 2012-07-11 22:08:28

回答

4

如果將所有內容放在一行中,您應該使用更詳細的樣式,因爲它太長或太複雜。

你也應該使用單獨的變量,如果變量的名稱會更容易理解代碼:

bool mustWait = someCommand.ConflictsWith(otherCommand); 
if (mustWait) { 
    ... 
} 

在這種情況下,你應該考慮使用一個枚舉額外的可讀性。

+1

這是一個很好的例子。這個問題的例子'TryParse'已經_tends_傳遞給​​if塊來「如果我解析成功,就這樣做」;在這個意義上說,它在圍牆上,任何一種風格都是合適的。你的例子證明'ConflictsWith'確實不代表調用代碼必須等待的東西。通過將其分配給「mustWait」,您立即通知「如果命令衝突,我們必須等待,這裏是要等待的代碼」。如果'ConflictsWith'直接放在if條件中,那麼這個含義就會丟失。這*是編碼你的例子的適當方式。 – 2012-07-11 23:10:18

+0

真的好點SLaks。 – Christoffer 2012-07-12 08:43:54

1

我在生產代碼中看到很多示例1。只要表達很簡單,並且很容易理解所發生的事情的邏輯,我不認爲你會發現很多人認爲它是壞風格

雖然你可能會發現很多人有不同的喜好。 :)

0

沒有正確的選擇。兩者都完全可以接受。

大多數人選擇第一個選項,如果你沒有很多條件來連接,因爲它會導致更少的代碼行。

1

繼承人我使用的規則:如果可以快速瀏覽它,並確切地知道它說的是什麼,請將它保留在一行。如果讀起來太複雜以至於無法讀取任何其他文本,請給它一個局部變量。不過,無論如何,你不需要一個非常長的if語句頭。所以如果它太長了,就把它分開。

0

正如你說你正在學習C#

所以我的投票將是這種風格適合你

bool parseSuccess = double.TryParse(stringToParse, out dblValue); 
if (parseSuccess) ... 

如果你在讀書,你將有很多東西需要學習和上述 風格明確地告訴你,的TryParse返回一個布爾值,所以你不會有 擔心或找到什麼了的TryParse

1

返回類型,我建議你使用局部變量喜歡這裏:

bool parseSuccess = double.TryParse(stringToParse, out dblValue); 
if (parseSuccess) ... 

有兩個原因:

可以使用多次,而不解析你的雙重另一個時段上的變化。

2.它使代碼更具可讀性。

考慮一下:

if(double.TryParse(string1, out Value1) && double.TryParse(string2, out Value2) && double.TryParse(string3, out Value3) && double.TryParse(string4, out Value4)) 
{ 
    //some stuff 
} 

它太長,它使代碼難以閱讀。因此,有時局部變異使得代碼更具可讀性。

1

源代碼的清晰度是一個重要的參數,特別是在應用程序維護中,但性能也是如此。

似乎並不重要,有時使用簡單的語法「技巧」編程語言,我們會得到非常好的結果。

如果我想我會稍後在代碼中以某種方式使用結果,我使用變量,否則我會優先考慮直接句子。