2013-12-18 59 views
1

請爲我提供關於下面代碼的意見..關於選項1和選項2,以便在C#中使用更好的編程習慣。使用鍵枚舉或Ascii代碼在編程方面更好?

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 

    // Option 1 
    if (e.KeyCode == Keys.Enter) 
    { 
     // some code 
    } 

    //Option 2 
    if (e.KeyCode == (char)13) 
    { 
     // some code 
    } 
} 
+2

將導致該網站是不是代碼審查,在這裏嘗試http://codereview.stackexchange.com/張貼 –

+0

只是要求更好的方式 - 可用在性能或良好的編程習慣方面的選擇。 – user3114414

+1

是否有任何特定原因需要使用選項2?你正在研究的場景有什麼特別之處?因爲我真的想不出任何理由選擇它。 – Kjartan

回答

0

選項1是if (e.KeyCode == Keys.Enter)更好:

  1. 這是更易於閱讀,例如什麼是(char) 27(char) 9Keys.Escape是明顯的
  2. 字符和鍵是不是一對一的關係,例如,字符「1」可以從Keys.D1Keys.NumPad1
0

選項1更清晰,更容易閱讀。沒有理由爲什麼你想要這樣的數字值。

0

使用選項1:

  • 它是清潔
  • 更容易閱讀
  • 它仍然會工作,如果數值應該在未來的某一時刻發生變化。
1

很明顯,選項1更具可讀性。 儘可能使用枚舉。

在源代碼中直接使用數字通常不是一個好習慣。

所以,如果你手頭有沒有枚舉或不想,而不是做這樣的事情來創建自己的,:

if (myObject.Position.X > 25) 

更好地做到這一點:

int leftBorder = 13; 
if (myObject.Position.X > leftBorder) 

這可能似乎不是乍一看非常重要,但作爲開發者,您有時會看到類似這樣的代碼

mObj.SetVl = Global.iValue + 27 - (Global.uValue * 2); 

快樂的猜測ing什麼,,iValue等意思:)。 在源代碼中給變量指定完整的名稱並且不要使用丟失的數字或字符串等是非常重要的。

3

想象一下:這是深夜,你正在瀏覽這段代碼,你會發現那條線,並且想知道:13究竟意味着什麼? 13是十進制還是13十六進制?如果它是41,那是什麼意思?這一切歸結爲代碼可維護性 - 使用預設的枚舉(尤其是當它已經爲您提供了,無需工作時)比直接的ASCII代碼更易於維護和閱讀。

當然,ASCII代碼工作,他們是舊的skool和糟糕的屁股,但枚舉減少了誤解的意圖的任何機會。