我是否将此类属性名称命名为对吗?

时间:2018-03-04 05:22:27

标签: c#

我正在与enum合作,我不确定我是否以正确的名字命名它们。

看起来像:

public class VietNam
{
    public enum Regions
    {
        [Display(Name = "Khu vực miền Trung")]
        Central = 0,
        [Display(Name = "Khu vực miền Bắc")]
        North = 1,
        [Display(Name = "Khu vực miền Nam")]
        South = 2
    }

    public enum CentralCities
    {
        [Display(Name = "Đà Nẵng")]
        TPDN = 0,
        [Display(Name = "Bình Định")]
        BD = 1,
        // ...
    }

    public enum NorthCities
    {
        [Display(Name = "Hà Nội")]
        TPHN = 0,
        [Display(Name = "Hải Phòng")]
        HP = 1,
        // ...
    }

    public enum SouthCities
    {
        [Display(Name = "Hồ Chí Minh")]
        TPHCM = 0,
        [Display(Name = "Cần Thơ")]
        CT = 1,
        // ...
    }
}

public sealed class SearchEngine : ISearchEngine
{
    public IEnumerable<Post> FindPostsByRegion(VietNam.Regions region)
    {
        throw new NotImplementedException();
    }

    public IEnumerable<Post> FindPostsByCity(VietNam.CentralCities city)
    {
        throw new NotImplementedException();
    }

    public IEnumerable<Post> FindPostsByCity(VietNam.NorthCities city)
    {
        throw new NotImplementedException();
    }

    public IEnumerable<Post> FindPostsByCity(VietNam.SouthCities city)
    {
        throw new NotImplementedException();
    }
}

我的烦恼:

public enum Regions {}

由于此属性包含多个成员,因此名称应为Regions而不是Region。我对CentralCitiesNorthCitiesSouthCities使用相同的概念,而不是CentralCityNorthCitySouthCity

在我使用之前,一切看起来都很好:

public IEnumerable<Post> FindPostsByRegion(VietNam.Regions region) {}

那么,region如何成为Regions的实例呢? region只包含1个地区名称(北,中或南)。然后,如果我重命名它(从region更改为regions),概念看起来没问题(regionsRegions的实例)但它只包含1个区域名称。出了点问题。

与城市相同。 CentralCities包含多个城市,因此名称后面应跟ies。那么,如果我只想要一个城市名称,会发生什么?像这样:

public IEnumerable<Post> FindPostsByCity(VietNam.CentralCities city) {}

citycitiesCentralCities)的实例?

目前,我还没有想过其他名字也要改变它们。我的问题是:如果我仍然使用这样的名字,那还可以吗?

我希望我的问题很清楚。谢谢!

3 个答案:

答案 0 :(得分:4)

好。 Microsoft表示使用单数类型名称进行枚举。

以下摘自微软网站

  
    

命名枚举枚举类型(也称为枚举)的名称通常应遵循标准的类型命名规则(PascalCasing,     等等。)。但是,还有其他适用的准则     特别是枚举。

  
     

✓除非值为,否则请使用单数类型名称进行枚举   位字段。

     

✓对于具有位字段的枚举,请使用复数类型名称   值,也称为标志枚举。

     

X请勿在枚举类型名称中使用“Enum”后缀。

     

X请勿在枚举类型名称中使用“Flag”或“Flags”后缀。

     

X不要在枚举值名称上使用前缀(例如,ADO的“ad”   枚举,“rtf”用于富文本枚举等。)。

同意在该枚举中有不同的枚举值。但最后,你不会同时使用所有这些。但是你将只使用一个枚举值。

所以可能在我看来,将枚举名称改为单数。再一次是我的意见

答案 1 :(得分:0)

一般来说,枚举名称应该是单数,但这是一个意见问题。

答案 2 :(得分:0)

同意使用单数名称进行枚举。 (对序列和其他容器使用复数名称。)这听起来更好。

除此之外:由于NorthCitiesSouthCitiesCentralCities都只是...城市,因此为所有这些城市制作单个枚举会更容易。毕竟,FindPostsByCity无论如何都会以同样的方式运作。如果您需要跟踪哪个城市在哪个区域,请创建明确映射出来的数据:Dictionary<VietNam.City, VietNam.Region>和/或Dictionary<VietNam.Region, List<VietNam.City>>