Dan*_*ner 0 .net collections interface naming-conventions
情况如下.
public interface IFoo { }
public abstract class FooBase : IFoo { }
Run Code Online (Sandbox Code Playgroud)
现在我需要IFoo一些额外的方法集合.
public class IFooCollection : List<IFoo>
{
public void UsefullMethod() { }
}
Run Code Online (Sandbox Code Playgroud)
问题是,IFooCollection当它是一个类时看起来像一个接口.选项如下.
IFooCollection- 我不喜欢这个,因为它看起来像一个界面.FooCollection- 我不喜欢这个,因为它不是foos的集合.FooBaseCollection因为所有的实现IFoo派生自FooBase- 我不喜欢这个,因为这可能永远不会是真的.IList<IFoo>因为只有一个完整的方法 - 我不喜欢这样,因为更改代码因为找不到类的名称...是的,这是令人讨厌的.那你会怎么做?我错过了一个命名约定吗?我们基本上使用这个Microsoft .NET库标准.
UPDATE
代码不会变得普遍 - 它只是在GUI工具中将一些数据放入服务器.所以我不关心将这些方法与其他集合一起使用或忽略这些方法.
Ale*_*x B 10
我喜欢FooCollection你有一个概念对象"Foo"的集合,即使没有实际的Foo类或接口.这与IFoo"Foo"的界面保持一致,即使没有Foo课程.SpecialFoo即使没有Foo上课,也会是一种特殊的"Foo" .
IFooCollection由于隐含的界面,我绝对同意这是错误的.
FooCollection - 由于Foo没有任何意义,因此'Foo'并不明显,因此很难概念化.尝试使用"真正的"类/接口名称,它更有意义 - 例如
public class ErrorHandlerCollection : List<IErrorHandler>
{
public void PublishErrors(){//...}
}
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为ErrorHandlerCollection是错误处理程序的集合.实现IErrorHandler的任何东西都是一个错误处理程序,因此ErrorHandlerCollection中的任何内容都将是一个错误处理程序.
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |