这总是让我感到困扰......
假设我有一个接口IFiddle
和另一个接口,它只是聚合了几个不同的IFiddle
:
public interface IFiddleFrobbler
{
IFiddle Superior { get; }
IFiddle Better { get; }
IFiddle Ordinary { get; }
IFiddle Worse { get; }
IFiddle Crackpot { get; }
}
(具体IFiddleFrobbler
和IFiddle
取决于配置,由工厂创建。)
我一再偶然发现这种“伞”类型的命名 - 我想用描述性的东西来交换“Frobbler”。
请告诉我,对于我的“伞形”类型,什么是一个好的命名方案?
编辑:作为xtofl pointed out in a comment,实际上比我上面首次公开的更多语义。如果我改为做以下事情,我认为我的需要更清楚:
//
// Used for places where the font width might need
// to be tapered for a rendered text to fit.
//
public interface ITaperableFont
{
Font Font { get; }
Boolean CanTaper { get; }
void Taper();
}
//
// Used for rendering a simple marked-up text in
// a restricted area.
//
public interface ITaperableFonts
{
ITaperableFont Biggest{ get; }
ITaperableFont Big { get; }
ITaperableFont Normal { get; }
ITaperableFont Small { get; }
ITaperableFont Smallest { get; }
}
事实上,我已经将上述现实生活中的问题确定为设计缺陷,而不是命名问题,这是几个人在下面指出的气味。
答案 0 :(得分:7)
你能使用复数:IFiddles
吗?
答案 1 :(得分:7)
我同意你的观点,认为类,接口或抽象类很难正确。我之前使用过的一些可能的名称是:
Assistant
Composite
XXX Coordinator
Group
答案 2 :(得分:3)
我会说你选择的名字应该取决于你想要达到的目标。在代码示例中,我会说你正在做的是设置评级,所以我可能会称之为IFiddleRating
作为一般性答案,我会说“这取决于”:)我觉得在尝试做之后给出一些东西是个好主意,而不是“它是什么”
答案 3 :(得分:3)
正如波普所说:“如果你不能说出来,那我就会在设计中闻到一些腥味。”
可能会重新考虑您的设计。
IFiddles : IDictionary<SomeType, IFiddle>
{
}
更新:如果你想让它自己创建一个接口:
IReadOnlyDictionary<TKey,TValue>
{
TValue this[TKey] { get; }
int Count { get; }
...
}
你的生活仍然可以像以前一样容易。
答案 4 :(得分:1)
我认为这确实是个人偏好的问题,所以我启动了一个词库,并寻找“家庭”的同义词(这本身就可以了)。
亲属,分类,流派,集团,种类,细分,协会,隶属关系,联盟,家族,集团,俱乐部,联盟,组合,组合,联盟,联合会,国会,合作社,家庭,联邦,团契,兄弟会,帮派,公会,联赛,暴徒,订单,组织,环,社会,联邦,联谊会,辛迪加,搭配,合作,部落,部队,马戏团,动物园我放弃了一些具有特定技术含义的东西(如工会,戒指,游泳池)......挑选你最喜欢的东西。