类名前面的前缀`I`是什么,比如IController,IObserver?

时间:2013-03-14 10:26:11

标签: coding-style code-conversion

我正在学习MVP模式。在某些例子中,我看到了这个!任何人都可以证明为什么程序员使用这个名称约定?

3 个答案:

答案 0 :(得分:2)

通常我在那里指示一个接口。没有我,它就是一堂课。我个人并不喜欢这个。我认为它在dot net中更常见。我在Java中看得太多了

我不喜欢的原因:

  • IDE现在会显示指示某个类是否为接口的图标。
  • 如果我想将接口更改为抽象类,则必须重命名该类
  • 这会伤害可读性。

答案 1 :(得分:1)

'我'代表界面。它是区分接口和类/结构的通用命名约定。

接口是不是类 - 它们定义行为,类提供实现。

阅读MSDN上的这篇文章了解更多信息:Choosing Between Classes and Interfaces

  

接口定义了一组成员的签名   实施者必须提供。接口无法提供实现   会员的详细信息。例如,ICollection接口   定义与使用集合相关的成员。每个班级都有   实现接口必须提供实现细节   这些成员。类可以实现多个接口。

答案 2 :(得分:1)

这是Hungarian notation被认为是个好主意的时代的神器。它让用户知道该名称是用于界面的。

此外,这是一种非常愚蠢的做法。

接口名称应反映它所代表的类之间的合同类型。它应该告诉你它与哪个类相关联。

它应该是class PDF extends Document implements Printable,因为它让你知道该类由于某种原因实现print()方法(在现实世界中它实际上是一个糟糕的API设计,但这是一个例子)而不是class PDF extends Document implements IDocument ..因为这会告诉你没有