就良好的编程而言,使用键枚举或 Ascii 代码更好

本文关键字:枚举 Ascii 更好 代码 编程 | 更新日期: 2024-10-31 14:10:47

请向我提供以下代码视图..在选项 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
    }
}

就良好的编程而言,使用键枚举或 Ascii 代码更好

想象一下

:现在是深夜,你正在浏览这段代码,你到了那一行,想知道:13到底是什么意思?那是 13 个十进制,还是 13 个十六进制?如果是 41 怎么办——这意味着什么?

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

当然,ASCII 代码有效,它们是旧的 skool 和坏屁股,但枚举减少了任何误解

意图的机会。

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

一般来说,在源代码中直接使用数字不是一个好的做法。

因此,如果您手头没有枚举或不想创建自己的枚举,而不是执行以下操作:

if (myObject.Position.X > 25)

最好这样做:

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

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

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

很高兴猜测 272iValue 等是什么意思:)。重要的是为您的变量提供有意义的完整名称,而不是在源代码中使用丢失数字或字符串等。

if (e.KeyCode == Keys.Enter)的选项

1 更好:

  1. 更容易阅读,例如什么是(char) 27(char) 9Keys.Escape显而易见
  2. 字符和键不是一对一的关系,例如字符"1"可以由Keys.D1Keys.NumPad1产生

选项 1 更简洁,更易于阅读。没有理由要像这样转换数值。

使用选项 1:

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