Rust: 开发文档评论风格指南

创建于 2013-01-05  ·  17评论  ·  资料来源: rust-lang/rust

在 1.0 版本之前,很多库代码预计会发生变化,现在这样做没有多大意义,但核心和标准库应该使用一致的 API 文档样式。 wiki尝试指定约定,但这些需要充实并实际应用于代码库。

现在,一些文档评论是用第三人称指示写的:

pub fn map<T, U>(opt: &Option<T>, f: fn(x: &T) -> U) -> Option<U> {
    //! Maps a `some` value by reference from one type to another

有些是用命令式写的:

pub fn chain<T, U>(opt: Option<T>,
                   f: fn(t: T) -> Option<U>) -> Option<U> {
    /*!
     * Update an optional value by optionally running its content through a
     * function that returns an option.
     */

这两个例子说明了另一个不一致之处:一些摘要(评论的第一行)没有结束标点符号,而另一些则以句点结尾。

另一件不同的事情是评论风格本身。 一些文档评论看起来像

/*!
 * foo...
 * bar...
 * baz...
 */

而其他人看起来像

/*!
 foo...
 bar...
 baz...
 */

一旦这些规则(和其他规则)被编纂,我很乐意开始浏览文档注释并更新它们。

P-low

最有用的评论

描述风格:

命令式:

所有17条评论

:+1: 讨论这个。 我想贡献文档,但我不想在完成后为你做更多的工作。 ;)

为了进行比较,标准的 Python 风格是使用命令式“返回 ...”,我发现它很有效:

http://www.python.org/dev/peps/pep-0257/#one -line-docstrings

Go 已经确定了非命令式风格: http :

探视分流。

就个人而言,我更喜欢命令式动词,并在结尾处加一个句号。 至于文档注释风格,我认为我们不应该强制执行任何特定的方式,至少在语言定义了多种方式来做到这一点时。 另外,我的首选方式是

/**
 * doc string
 */

我也更喜欢命令式。 样式还需要包含用于引用类型和参数的统一语法,因此rustdoc可以正确地注释/超链接它们。 虽然那是在路上

探视分流。 对此,我的意见很少。

描述风格:

命令式:

我自己更喜欢描述性版本,因为方法定义在我告诉它之前不会做任何事情:

class Machine
{
    // Self-destructs the machine, if necessary.
    void self_destruct();
};

// Self-destruct!
if ( emergency )
  machine.self_destruct();

我对 kud1ing 的论点是明智的。 此外,如果您按照文档中显示的方式大声朗读一行:

零 返回附加标识 0。

然后声明形式使它成为一个真正的句子"zero" returns the additive identity, 0.

@Armavica :这实际上是The method "zero" returns the additive identity, 0的缩写形式。

文档和界面正在向观众展示一些东西。 我认为命令形式更有意义,当您解释在实现中发生了什么/如何/为什么发生某些事情时。

还有https://github.com/mozilla/rust/issues/9403关于文档中示例的样式。

犁。

从这里的评论来看,描述性风格(例如,“将字节转换为字符串。”)似乎比命令式风格(“将字节转换为字符串。”)更受欢迎。 我不太关心我们走哪条路,但如果能就此做出正式决定就好了。

我认为将其称为命令式风格是错误的。 这不是强制性的,因为它没有指示任何人做任何事情。 我认为这是指示性的第一人称在场。 我怀疑写作的冲动

/// Frob the twaddle.
fn frob() {}

源于“我就是功能。我该怎么做?”的心态,所以它是第一人称的指示性。

但是,在阅读文档时,大多数读者自然会将该功能视为第三人称单数主题,而不是第一人称主题。 为此,文档应以第三人称单数而不是第一人称书写。


我认为将其视为命令式而非第一人称指示性的唯一合理论点是文档字符串何时描述了用户希望实现的函数声明。 这在 OO 语言中很常见,但在 Rust 中仅适用于 trait 方法。 这个案例建议使用命令式,因为它告诉您必须做什么才能正确实现该方法。

但我不认为这个论点有说服力。 文档的主要用例是告诉读者如何_使用_ API,而不是如何实现它。 API 的使用次数远远超过实现的次数(除了最深奥的情况外)。 因此,我认为在第三人称单数中使用现在时指示比使用命令式更有意义,即使对于特质方法也是如此。

另一件事要处理:连字符或破折号:

https://en.wikipedia.org/wiki/Dash#Relationships_and_connections

在这些坐标/关系/连接类型的术语中,对破折号而不是连字符的偏好是风格偏好的问题,而不是固有的正字法“正确性”; 两者都同样“正确”,并且每个都是某些样式指南中的首选样式。

我已经提交了一个 RFC: https :

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

lambda-fairy picture lambda-fairy  ·  3评论

drewcrawford picture drewcrawford  ·  3评论

dtolnay picture dtolnay  ·  3评论

Robbepop picture Robbepop  ·  3评论

pedrohjordao picture pedrohjordao  ·  3评论