Edw*_*uay 15 c# enums naming-conventions
这个stackoverflow问题有一个有趣的讨论,关于如何避免给枚举和属性提供相同的名称,这样你就没有这样的代码:
public SaveStatus SaveStatus { get; set; }
Run Code Online (Sandbox Code Playgroud)
似乎接受的答案建议使用"状态"作为枚举和属性的"状态":
public SaveStatus SaveState { get; set; }
Run Code Online (Sandbox Code Playgroud)
但我认为这很难理解,也不能立即明确什么是什么.
由于这个枚举命名问题是一个不变的问题,我考虑只是总是用"Enum"为我的枚举添加后缀,所以我会这样:
public SaveStatusEnum SaveStatus { get; set; }
SaveStatus = SaveStatusEnum.Succeeded;
Run Code Online (Sandbox Code Playgroud)
有没有人这样做?满意吗?以另一种方式解决了这个问题?
Ryt*_*mis 23
考虑创建一个与其基础类型同名的属性.例如,如果声明名为Color的属性,则属性的类型也应为Color.
我认为那是"不":)
编辑:
如果您不喜欢在声明属性的类中使用完全限定名称,则可以解决此问题:
using SaveStatusEnum = MyNamespace.SaveStatus;
...
SaveStatus = SaveStatusEnum.SomeValue;
Run Code Online (Sandbox Code Playgroud)
这样你可以保持枚举名称没有后缀,并将命名奇怪限制在那一个类.:)
.net Framework是否使用Enum作为后缀?不,这就是为什么我也不使用它.
相反,我使用像Option(或选项,如果它是Flags-Enum),模式或类似的单词.
public SaveStatusMode SaveStatus { get; set; }
public SaveStatusOption SaveStatus { get; set; }
public SaveStatusVariant SaveStatus { get; set; }
Run Code Online (Sandbox Code Playgroud)
Microsoft的.NET命名准则不提供任何此类建议.
为什么你会避免给枚举和属性提供相同的名称?这个:
public SaveStatus SaveStatus { get; set; }
Run Code Online (Sandbox Code Playgroud)
工作得很好,可读,并且非常易于发现和使用.