【发布时间】:2010-02-24 09:49:30
【问题描述】:
这“一直”困扰着我……
假设我有一个接口IFiddle 和另一个接口,它只是聚合几个不同的IFiddles:
public interface IFiddleFrobbler
{
IFiddle Superior { get; }
IFiddle Better { get; }
IFiddle Ordinary { get; }
IFiddle Worse { get; }
IFiddle Crackpot { get; }
}
(具体的IFiddleFrobblers 和IFiddles 取决于配置,由工厂创建。)
我反复偶然发现这种“伞”类型的命名 - 我想将“Frobbler”换成描述性的东西。
- “集合”、“列表”和“集合”还不够好,因为它不是可以枚举、添加或删除元素的集合/列表/集合。
- “经理”已退出,因为没有进行任何管理 - 工厂和配置会处理。
- “Aggregator”听起来像是直接从 GoF 书中挑选出来的(尽管我认为他们不会违反“demeter 法则”——这不在本文的主题范围内)。
请赐教,我的“伞”类型有什么好的命名方案?
编辑:作为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; }
}
事实上,我在上面的实际添加中将我的问题确定为设计缺陷,而不是命名问题,下面有几个人指出了这个问题。
【问题讨论】:
-
如果你不能说出它的名字,那么我在设计中闻到了一些腥味。
-
@Pop:正确。这是一种让我的生活更轻松的务实方式,我知道它可能被视为一种气味。
-
在我的公司,我们使用
Bunny表示我们无法命名的事物。 -
@Earwicker:是的,当其他一切都失败时,这总是一个紧急退出。 :)
-
IDuck?像鸭子一样走路,像鸭子一样颤抖,闻起来像鸭子......
标签: c# oop naming-conventions naming