只要你在魔法值和含义之间有某种映射,那么你应该考虑使用枚举.这样,您可以直接使用枚举常量而不是魔术值.
例如,你可以这样:
string getDayOfWeek(int dayOfWeek)
{
if(dayOfWeek == 0)
return "saturday";
else if(...
}
Run Code Online (Sandbox Code Playgroud)
您可以改为定义枚举,而不是使用int输入参数:
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
string getDayOfWeek(Days dayOfWeek)
{
if(dayOfWeek == Days.Sat)
return "saturday";
else if(...
}
Run Code Online (Sandbox Code Playgroud)
该getDayOfWeek函数的第一个变体被认为是坏的,原因有两个:
1)它很难阅读,因此难以维护并且更容易在代码中出错
2)如果你想将Sat改为现在意味着1你有很多的代码更改