评论界面,实施还是两者?

我想我们都(当我们可以被打扰!)评论我们的接口。 例如

/// <summary> /// Foo Interface /// </summary> public interface Foo { /// <summary> /// Will 'bar' /// </summary> /// <param name="wibble">Wibble factor</param> void Bar(string wibble); } 

你也评论实施(也可能提供给客户,例如作为一个图书馆的一部分)? 如果是的话,你如何pipe理保持两个同步? 或者你只是添加一个“查看接口的文档”评论?

谢谢

作为一般规则,我使用与代码相同的DRY(不要重复自己)原则:

  • 在界面上,logging界面
  • 在实施上,logging实施细节

特定于Java :在logging实现时,使用{@inheritDoc}标记从接口“包含”javadoc。

了解更多信息:

  • 官方的javadoc文档
  • 一些非官方的build议 。

如果您使用GhostDoc插件,则在右键单击并在方法上select“Document This”时,将使用界面中的注释更新实现。

只有界面。 两个评论都是重复的,如果代码改变,这两组评论最终可能会失去同步。 使用“implements MyInterface”评论实现…像Doxygen这样的东西将生成文档,包括派生的文档到实现的文档(如果你正确设置)。

对于C#它取决于IMO:如果你使用显式接口实现,那么我不会logging实现。

但是,如果直接实现接口并将接口的成员暴露给对象,那么这些方法也必须logging下来。

正如Nath所说,您可以使用GhostDoc自动将接口的文档插入到实现中。 我将文档这个命令映射到Ctrl + Shift + D的快捷键和我几乎自动按下的一个按键。 我相信ReSharper也可以select插入接口的文档,当它实现你的方法。

我们只是评论接口,注释很容易与派生或基类/接口不同步,这是很好的,只在一个地方。

虽然它看起来像@Nath可能build议一个自动化的文档工具,帮助保持在一起(听起来很酷,如果你使用的话)。 在这里WhereIWorkAndYouDontCare注释是为开发,所以在代码中的一个地方是首选

评论接口应该有足够的文档来弄清楚如何使用实际的实现。 唯一一次,我会添加评论的实施,如果它有私人function插入,以满足接口,但他们将是内部唯一的意见,不会在网上看到的文档或客户端可用。

实现就是这样,只要它们符合接口,就不需要单独logging它们。