使用常量与文字时有什么好的做法?

What is a good practice when using constants versus literals?

我正在编写一个应用程序,我想确保在常量和文字方面有一个良好的编码标准。问题是,我不完全确定我应该在哪里使用常量,以及在哪里使用常量太过火了!例如...

public class MyWindow : Window
{
    public const string WindowTitle = "This seems like overkill!";

    public MyWindow() : base()
    {
        this.Title = WindowTitle;
    }
}

所以我的问题是,决定什么应该声明为常量、什么不应该声明的最 widely-accepted 标准是什么?我猜只在一个地方使用的任何东西都应该是文字(例如 window 的标题),而多次使用的任何东西应该是常量?

const 字段存储在程序集元数据中。当您在其他一些程序集中引用该程序集时,const 字段的 VALUES 会直接复制到引用程序集中。

因此,如果您决定更改 const 字段,则必须重新编译所有引用它的程序集才能看到更改。

例如,如果在 Assembly1 中您有:

public class Class1
{
    public const string ConstString = "Const";
}

并在 Assembly2 中引用它:

class Class2
{
    void DoSomething()
    {
        Console.WriteLine(Class1.ConstString);
    }
}

Class1.ConstString 将在编译时替换为常量 ("Const") 的值。

常量是指常量变量,帮助编译器进行优化,帮助程序员不改变不应该改变的东西。

由于没有关于此主题的广泛使用的规范,因此您可以自行决定编写代码的完美程度和项目的规模。我会说最好的做法是尽可能使用 const 。无论如何,通常不会经常发生真正成为问题的情况,并且从编程风格的角度来看,这是编写好的代码的好习惯。