我如何记录一个子类覆盖的方法,而不是多余的?例如...
class Parent
# Is this the parent?
# @return [Boolean]
def parent?
true
end
end
class Child < Parent
def parent?
false
end
end
YARD会产生类似这样的结果。
类:父级
示例方法摘要
#parent? ⇒ Boolean
这是父级吗?
类别:子系
示例方法摘要
#parent? ⇒ Boolean
生成的YARD文档将不会在“Child#parent?”的文档中包含“Is this the parent?”,也不会指出它是一个替代。
我希望看到这样的东西:
类:父级
示例方法摘要
#parent? ⇒ Boolean
这是父级吗?
类别:子系
示例方法摘要
#parent? ⇒ Boolean
这是父级吗?
从父级继承的方法
#parent?
我不希望将文档复制到每个子类中。
2条答案
按热度按时间bvjxkvbb1#
简单答案
正确的方法是在返回类型后面加上一个自由格式的描述,也可以记录方法本身。例如:
更全面的示例
您还可以通过利用标记语法的自由格式部分和标记语言(默认为RDoc)来提供用法示例和更详细的文档。
可能还有更优雅的方法来实现这一点,我在电话上输入代码,所以 * caveat emptor *,因为我还没有实际测试代码或验证YARD输出的格式。尽管如此,一般的方法是合理的,我经常使用这种类型的格式。
核心理念
基本上,核心思想是:
1.如果要将每个标记项的说明与该项关联,请将其置于行内。大多数标记支持自由格式的说明或标题,这些说明或标题的格式将使其与标记元素在视觉上关联。
1.为类、方法、参数、示例等使用标签和格式。您不必将所有内容都塞进一个标签中,尽管在您的 * 特定 * 示例中,您可能希望这样做以保持视觉关联。
1.在 * 大多数 * 情况下,您可以使用缩进对长的自由格式文本进行换行。
1.有几个例外的 Package (例如,示例标题与缩进代码块是说明性的),但您通常可以解决与RDoc或Markdown语法。
1.如果你不能得到你想要的东西,参考第四条的一些替代方法,或者找到一个不同的标签或标记来代表你的意图。
1.如果你不能从盒子里得到你想要的东西,宏、自定义标签和指令可以让你做一些奇怪而美妙的事情。* 注意:我几乎从来不需要求助于此,但如果你需要的话,功能就在那里。*
在大多数情况下,越简单越好。理解YARD如何以及何时不能简洁地表示作者的意图无疑是一种艺术形式,但是很难按预期标记或呈现的代码可能表明需要 * 重构代码 *,而不仅仅是修改YARD标记。
牢记YARD的主要目的
请记住,YARD主要用于文档的**元素,并为呈现引擎或文档阅读器提供提示。它本身不是一种成熟的标记语言,不能像使用Steep的RBS那样验证签名,也不能强制执行任何类型的调用者/被调用者契约。
所有这些都只是注解。让你的代码尽可能地自我解释,然后把YARD作为一种方法,通过标记文档元素来改进必要的注解,以便标记语言生成更好的输出。
p4rjhz4m2#
您可以在每个单独的方法上使用引用标记来引用父方法。
Child#parent?
将具有与Parent::parent?
相同的文档