使用Keys Enumeration或Ascii代码在良好编程方面更好?

时间:2013-12-18 09:19:58

标签: c# .net winforms

请向我提供有关选项1和选项2的以下代码的视图,以便在C#中使用更好的编程实践。

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
    }
}

5 个答案:

答案 0 :(得分:3)

想象一下:这是深夜,你正在查看这段代码,你就到了那条线,并想知道:13究竟是什么意思?是13十进制,还是13十六进制?如果它是41那会是什么意思?

这一切都归结为代码可维护性 - 使用预设枚举(特别是当它已经为您提供时,无需工作)比直接ASCII代码更易于维护和读取。

当然,ASCII代码有效,而且它们是旧的skool和坏屁股,但是枚举减少了误解概念的可能性

答案 1 :(得分:1)

很明显,选项1更具可读性。 尽可能使用枚举。

在源代码中直接使用数字通常不是一个好习惯。

因此,如果您手头没有枚举或不想创建自己的枚举,而不是做这样的事情:

if (myObject.Position.X > 25)

更好地做到这一点:

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

乍一看这似乎并不那么重要,但作为开发人员,您有时会看到像这样的代码

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

快乐地猜测 27 2 iValue 等意味着什么:)。 重要的是为您的变量赋予有意义的名称,而不是在源代码中使用丢失的数字或字符串等。

答案 2 :(得分:0)

选项1更清晰,更易于阅读。你没有理由想要像这样投出数值。

答案 3 :(得分:0)

使用选项1:

  • 更清洁
  • 更容易阅读
  • 如果数值在未来的某个时刻发生变化,它仍然有用。

答案 4 :(得分:0)

if (e.KeyCode == Keys.Enter)的选项1更好:

  1. 更容易阅读,例如什么是(char) 27(char) 9Keys.Escape很明显
  2. 字符和键不是一对一的关系,例如字符'1'可以来自Keys.D1Keys.NumPad1