2013-03-14 66 views

回答

2

通常我在那里表示一个接口。没有我是一堂课。我个人不喜欢这个。我认为这在网络中更常见。我还没有看到它在Java中太多

原因,我不喜欢:

  • 的IDE现在表明,指示类是否是一个接口或没有图标。
  • 如果我想将接口更改为抽象类,则必须重命名类
  • 它会伤害可读性。
+0

1)考虑下面这行代码:'ICollection collection = this.Foo();'你在IDE中没有图标。 2)从合同切换到实现*是代码的重大变化(没有多重继承)3)请参阅点1) – 2013-03-14 10:33:54

+0

1)更正你没有图标,但你真的在乎它是否是一个接口吗? 2)同意它将更改代码,但为什么我必须重新命名为重构的一部分。我想专心于编译和结构。 3)让我在那里我不认为有助于可读性。它使得班级名称更难以记住IMO – RNJ 2013-03-14 10:36:13

+0

3)你不会将'I'添加到类中 - 因此班级的名称是* not *难以记忆,并且避免混淆什么是类和什么是界面;-) – 2013-03-14 13:07:09

1

'我'代表界面。将接口与类/结构区分开来是一种常见的命名约定。

接口是而不是类 - 它们定义的行为和类提供了实现。

阅读这篇文章在MSDN上的详细信息:Choosing Between Classes and Interfaces

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

+0

这是针对微软相关技术还是所有编程语言,我们都有这样的代码约定? – 2013-03-14 10:36:56

+0

主要是微软。 – 2013-03-14 13:05:27

1

这是一个从Hungarian notation被认为是一个好主意的年龄的神器。它让用户知道名称是用于界面的。

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

接口的名称应反映它表示的类之间的合同种类。它应该而不是告诉你它已被绑定到哪个类。

应该class PDF extends Document implements Printable,因为它可以让你知道类实现某种原因print()方法(在一个真实的世界,将是实际上是一个糟糕的API设计,但是这是一个例子)的代替class PDF extends Document implements IDocument ..因为这告诉你没有什么

相关问题