什麼是更好的編碼習慣,爲什麼?什麼是較好的編碼習慣?
string str1 = textBox1.Text;
string str2 = textBox2.Text;
void FunctionName (str1, str2);
或者
void FunctionName(textBox1.Text, textBox2.Text);
什麼是更好的編碼習慣,爲什麼?什麼是較好的編碼習慣?
string str1 = textBox1.Text;
string str2 = textBox2.Text;
void FunctionName (str1, str2);
或者
void FunctionName(textBox1.Text, textBox2.Text);
我認爲強制執行一種方法的編碼標準規則往往太嚴厲。我傾向於使用在每種情況下最可讀的方法。這甚至可能在相同的方法內變化!
在給出的例子中,我認爲第二個選項實際上更具可讀性和可理解性 - 它非常清楚地顯示了函數調用和兩個控件之間的關係。
在@ OD的示例中,在控制值傳入之前,額外的事情正在「完成」,變得有點難以看到發生了什麼,並且將「混淆」變量拉出來並以某種方式命名它們這就解釋了你想要達到的目標,使代碼更具可讀性(和自我記錄)。
一般來說,我會說:通過把一切都直接進入方法/函數調用
就個人而言,我會去與選項2,看到它的代碼更少,因此更容易閱讀和理解另一家開發商前來代碼(多)後上。
我想象編譯器會優化第一個到第二個無論如何(但我不知道這是真的)。
不。它實際上是「優化」第二個到第一個。 – 2011-03-30 06:31:15
@Cody:感謝您的信息 - 很高興知道。 – 2011-03-30 07:21:56
從性能的角度來看,它將是相同的,因爲編譯器會優化它,所以你選擇什麼樣的練習並不重要。
當你不打算對它做任何事情時,沒有必要聲明單獨的變量。所以我說後者更好。
在前面的例子中,您正在做不合適的工作,並增加了代碼的複雜性。
現在,如果您打算對這些值進行一些處理,則可以選擇使用前一種方法。但是你應該給他們更多描述性的名字,而不是str1
和str2
來傳達他們的目的。
我會說第一個選項更好,如果任何人需要在將字符串傳遞給函數之前對其進行任何操作,他會傾向於在函數調用上執行此操作,從而導致嵌套調用的時間更長,更不可讀,因爲它看起來像:
FunctionName(AnotherFunc(textBox1.Text), AnotherAnotherFunc(textBox2.Text));
等
具有字符串之間可以更容易地使其中STIL可讀的變化。
反對者!我喜歡你的風格。在這樣一個完全微不足道的例子中,我認爲第二個是明顯的選擇。但是,正如你所建議的,生產代碼很少如此微不足道。 +1 – 2011-03-30 06:32:35
如果您對用戶輸入執行某種健全性檢查,則需要前一版本。例如,你可以檢查string.Empty
等的文本框文本。在你的情況下,創建另一個變量沒有意義,它是多餘的。
從.NET的角度來看,執行不會改變,因爲它將在JIT期間進行優化。
例如,
string str1 = textBox1.Text.Trim();
string str2 = textBox2.Text.Trim();
if(!string.IsNullOrEmpty(str1) && !string.IsNullOrEmpty(str2))
{
FunctionName (str1, str2);
}
或
string str1 = textBox1.Text.Trim();
string str2 = textBox2.Text.Trim();
if(ValidateInput(str1) && ValidateInput(str2))
{
FunctionName (str1, str2);
}
首先它不會使關於處理速度的差異。兩者都需要相同的時間。 Option2是我會選擇的,因爲它更容易閱讀IMO。
在某些情況下,將值放入變量中僅僅是爲了讓您在調試代碼時在其上放置斷點。它並不適用於這個例子,但有些情況下我會選擇option1只是因爲這個原因。
沒關係。 **這不是優化。** – 2011-03-30 06:30:50
如果有人願意接受代碼,那麼它確實很重要。在所示的示例中,第二個版本比第一個示例更容易理解。如果你試圖吸收這些東西的屏幕全部,並且第一種方式都是虔誠地完成的話,那麼吸收會更難。 – 2011-03-30 08:42:39
@Dave:這絕對是一個意見。聲稱後者更容易閱讀或理解幾乎沒有普遍的合理性。 (請看這裏的答案以進行確認!) – 2011-03-30 10:14:10