我正在与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
。我对CentralCities
,NorthCities
和SouthCities
使用相同的概念,而不是CentralCity
,NorthCity
和SouthCity
。
在我使用之前,一切看起来都很好:
public IEnumerable<Post> FindPostsByRegion(VietNam.Regions region) {}
那么,region
如何成为Regions
的实例呢? region
只包含1个地区名称(北,中或南)。然后,如果我重命名它(从region
更改为regions
),概念看起来没问题(regions
是Regions
的实例)但它只包含1个区域名称。出了点问题。
与城市相同。 CentralCities
包含多个城市,因此名称后面应跟ies
。那么,如果我只想要一个城市名称,会发生什么?像这样:
public IEnumerable<Post> FindPostsByCity(VietNam.CentralCities city) {}
city
是cities
(CentralCities
)的实例?
目前,我还没有想过其他名字也要改变它们。我的问题是:如果我仍然使用这样的名字,那还可以吗?
我希望我的问题很清楚。谢谢!
答案 0 :(得分:4)
好。 Microsoft表示使用单数类型名称进行枚举。
以下摘自微软网站
命名枚举枚举类型(也称为枚举)的名称通常应遵循标准的类型命名规则(PascalCasing, 等等。)。但是,还有其他适用的准则 特别是枚举。
✓除非值为,否则请使用单数类型名称进行枚举 位字段。
✓对于具有位字段的枚举,请使用复数类型名称 值,也称为标志枚举。
X请勿在枚举类型名称中使用“Enum”后缀。
X请勿在枚举类型名称中使用“Flag”或“Flags”后缀。
X不要在枚举值名称上使用前缀(例如,ADO的“ad” 枚举,“rtf”用于富文本枚举等。)。
同意在该枚举中有不同的枚举值。但最后,你不会同时使用所有这些。但是你将只使用一个枚举值。
所以可能在我看来,将枚举名称改为单数。再一次是我的意见
答案 1 :(得分:0)
一般来说,枚举名称应该是单数,但这是一个意见问题。
答案 2 :(得分:0)
同意使用单数名称进行枚举。 (对序列和其他容器使用复数名称。)这听起来更好。
除此之外:由于NorthCities
,SouthCities
和CentralCities
都只是...城市,因此为所有这些城市制作单个枚举会更容易。毕竟,FindPostsByCity
无论如何都会以同样的方式运作。如果您需要跟踪哪个城市在哪个区域,请创建明确映射出来的数据:Dictionary<VietNam.City, VietNam.Region>
和/或Dictionary<VietNam.Region, List<VietNam.City>>
。