【发布时间】:2013-10-15 10:39:13
【问题描述】:
我有一个典型的 OO 模式:一个基本抽象类(定义抽象方法)和几个以特定于类的方式实现这些抽象方法的类。
我习惯于在抽象方法中只编写一次文档,然后它会自动传播到几个具体的类(至少它在 Javadoc、Scaladoc、Doxygen 中的工作方式如下),即我不需要重复在所有具体类中都有相同的描述。
但是,我找不到如何在 YARD 中进行这种传播。我试过了,例如:
# Some description of abstract class.
# @abstract
class AbstractClass
# Some method description.
# @return [Symbol] some return description
# @abstract
def do_something
raise AbstractMethodException.new
end
end
class ConcreteClass < AbstractClass
def do_something
puts "Real implementation here"
return :foo
end
end
我得到了什么:
- 代码按预期工作 - 即在抽象类中调用 throws
AbstractMethodException,在具体类中完成工作 - 在 YARD 中,
AbstractClass明确定义为抽象,ConcreteClass是正常的 - 方法描述和返回类型在
AbstractClass中很好 - 据说方法会在
AbstractClass中抛出AbstractMethodException - 方法完全没有描述,
Object的返回类型在ConcreteClass中是通用的,根本没有注意到基类中存在抽象方法。
我期望得到什么:
- 方法的描述和返回类型从
AbstractClass的信息继承(即复制)到ConcreteClass - 理想情况下,此方法在
ConcreteClass描述的“继承”或“实现”部分中指定,并带有从ConcreteClass#do_something到AbstractMethod#do_something的一些参考链接。
有可能吗?
【问题讨论】:
标签: ruby abstract documentation-generation yard