我想我们都(当我们可以被打扰的时候!)评论我们的界面。
/// <summary>
/// Foo Interface
/// </summary>
public interface Foo
{
/// <summary>
/// Will 'bar'
/// </summary>
/// <param name="wibble">Wibble factor</param>
void Bar(string wibble);
}
你是否也对实现进行注解(也可能提供给客户端,例如作为库的一部分)?如果是,你如何保持两者同步?或者你只是添加一个“查看文档界面”注解?
9条答案
按热度按时间3mpgtkmj1#
作为一般规则,我使用与代码相同的DRY(不要重复自己)原则:
Java专用:在记录实现时,使用{@inheritDoc}标记从接口“包含”javadoc。
更多信息:
rur96b6h2#
C#用法:
接口可以看起来像这样:
实现可以看起来像这样:
<inheritdoc />
的官方参考:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags#inheritdoc1szpjjfi3#
仅接口。注解两者是重复的,如果代码发生更改,两组注解最终可能会失去同步。使用“implements MyInterface”注解实现...... Doxygen之类的东西将生成文档,这些文档将派生的文档包含到实现的文档中(如果您正确设置了它们)。
rta7y2nd4#
如果您使用GhostDoc插件,当您右键单击并选择方法上的“DocumentThis”时,它会使用来自接口的注解更新实现。
iecba09b5#
对于C#,它取决于IMO:如果你使用显式的接口实现,那么我就不会记录实现。
但是,如果您直接实现接口并使用对象公开接口的成员,那么这些方法也必须记录下来。
正如Nath所说,你可以使用GhostDoc自动将接口的文档插入到实现中。我将Document This命令Map到Ctrl+Shift+D快捷键和它的一个按键,我几乎自动按下。我相信ReSharper也可以选择插入接口的文档,当它为你实现方法时。
hts6caw36#
注解接口应该是足够的文档来弄清楚如何使用实际的实现。唯一的一次,我会添加注解的实现是,如果它有私人的功能,插入,以满足接口,但他们将是内部唯一的评论,不会看到在线文档或提供给客户端。
实现就是这样,只要它们符合接口,就没有必要单独记录它们。
i7uaboj47#
我们只是注解了接口,注解很容易与派生类或基类/接口不同步,所以把它放在一个地方很好。
虽然看起来@Nath可能会建议使用一个自动化文档工具来帮助将所有东西放在一起(如果您使用它,听起来很酷)。
b4qexyjb8#
你当然可以同时注解这两个接口,但是你会遇到维护这两个接口的问题(如前所述)。然而,在这个时代,任何消费代码真的不使用IoC/DI而不使用接口吗?考虑到这一点,如果你只想注解一个接口,我强烈建议你注解接口。这样代码的消费者将更有可能得到很好的智能提示。
vzgqcmou9#
我创建了一个对XML文档文件进行后处理的工具,以添加对标记的支持。
虽然它对源代码中的Intellisense没有帮助,但它允许将修改后的XML文档文件包含在NuGet包中,因此可以在引用的NuGet包中使用Intellisense。
它位于www.inheritdoc.io(免费版本可用)。