代码之家  ›  专栏  ›  技术社区  ›  o.k.w

枚举命名约定-复数

  •  351
  • o.k.w  · 技术社区  · 16 年前

    尽管我读过类似的文章,但并不是我想要的,我还是问了这个问题 C# naming convention for enum and matching property

    public enum EntityTypes {
      Type1, Type2
    }
    
    public class SomeClass {
      /*
        some codes
      */
    
      public EntityTypes EntityType {get; set;}
    
    }
    

    当然,这是可行的,这是我的风格,但有人能发现这种惯例的潜在问题吗?不过,我确实有一个“丑陋”的名字,叫做“状态”:

    public enum OrderStatuses {
      Pending, Fulfilled, Error, Blah, Blah
    }
    
    public class SomeClass {
      /*
        some codes
      */
    
      public OrderStatuses OrderStatus {get; set;}
    
    }
    

    也许我的问题不够清楚。在命名我定义的枚举类型的变量时,我经常不得不认真思考。我知道最佳实践,但这无助于简化我命名这些变量的工作。

    好吧,我想我应该这样问这个问题:有人能想出一个好的通用方法来命名枚举类型,这样在使用时,枚举“实例”的命名会非常简单吗?

    10 回复  |  直到 9 年前
        1
  •  289
  •   jason    13 年前

    Enum s除非 枚举 FlagsAttribute 也一样)。看 Enumeration Type Naming Conventions (微软的一个子集 Naming Guidelines ).

    为了回应你的澄清,我认为以下任何一项都没有错:

    public enum OrderStatus { Pending, Fulfilled, Error };
    
    public class SomeClass { 
        public OrderStatus OrderStatus { get; set; }
    }
    

    public enum OrderStatus { Pending, Fulfilled, Error };
    
    public class SomeClass {
        public OrderStatus Status { get; set; }
    }
    
        2
  •  32
  •   Bob Kaufman    9 年前

    我最初以复数形式命名枚举,但后来改为单数。只是在使用它们的背景下似乎更有意义。

    enum Status { Unknown = 0, Incomplete, Ready }
    
    Status myStatus = Status.Ready;
    

    Statuses myStatus = Statuses.Ready;
    

        3
  •  21
  •   Kyle Rosendo    16 年前

    这种情况从来都不适用于复数。

    enum 显示某事物的属性。我举个例子:

    enum Humour
    {
      Irony,
      Sarcasm,
      Slapstick,
      Nothing
    }
    

    Humour.Irony | Humour.Sarcasm

    Humours { Irony, Sarcasm }

    你有幽默感,你没有幽默感。

        4
  •  11
  •   Charles Bretana    12 年前

    public enum PersonTypesEnum {
        smart,
        sad,
        funny,
        angry
    }
    
    
    public class Person {   
        public PersonTypesEnum PersonType {get; set;}
    }
    

        5
  •  9
  •   Heather    8 年前

    在阅读了您编辑的问题后,我觉得您可能会认为属性名或变量名必须与枚举类型名不同。..它没有。以下内容非常好。..

      public enum Status { New, Edited, Approved, Cancelled, Closed }
    
      public class Order
      {
          private Status stat;
          public Status Status
          { 
             get { return stat; }
             set { stat = value; }
          }
      }
    
        6
  •  6
  •   Jeremy Cron    16 年前

    如果你想写这样简单但被禁止的代码:

        public class Person
        {
            public enum Gender
            {
                Male,
                Female
            }
            //Won't compile: auto-property has same name as enum
            public Gender Gender { get; set; }  
        }
    

    1. public class Person
      {
          public enum GenderEnum
          {
              Male,
              Female
          }
          public GenderEnum Gender { get; set; }
      }
      
    2. public class Characteristics
      {
          public enum Gender
          {
              Male,
              Female
          }
      }
      public class Person
      {
          public Characteristics.Gender Gender { get; set; }  
      }
      
        7
  •  4
  •   Community Mohan Dere    9 年前

    最佳实践-使用单数。您有一个组成枚举的项目列表。当你说的时候,使用列表中的项目听起来很奇怪 Versions.1_0 Version.1_0 因为只有一个1_0版本。

        8
  •  4
  •   MiloNC    14 年前

    进来有点晚。..

    你的问题和那个问题有一个重要区别 you mention (我问;-):

    您将枚举定义移出类,这允许您对枚举和属性使用相同的名称:

    public enum EntityType { 
      Type1, Type2 
    } 
    
    public class SomeClass { 
      public EntityType EntityType {get; set;} // This is legal
    
    }
    

    在这种情况下,我会遵循MS指南,为枚举使用单数名称(标志为复数)。这可能是最简单的解决方案。

    other question

        9
  •  0
  •   Community Mohan Dere    9 年前

    但我们忽略了这样一个事实,即枚举在声明时指定了它可以具有的值(来自给定的值集)。这并不意味着该枚举的实例将存储多个值。.... 当我们写: 枚举天数{周一、周二、周三、周四、周五、周六、周日}; 我们之所以将其复数化,是因为提供了多个值。。 然而,当使用(Days day=Days.MON;)时,我们完全忽略了该枚举的实例应该只有一个值。... 所以当我们写: 尽管(如上所述),要绕过这个问题而不使用单数名称,可以使用任何类型的Indicator,如DayEnum或EDay(我更喜欢第二个)。...