YARD doc-如何记录专注于其父类的类类型

时间:2019-04-26 09:33:01

标签: code-documentation yard

假设我有以下内容

class AbstractClass; end
class ConcreteClass1 < AbstractClass; end
class ConcreteClass2 < AbstractClass; end

如何记录返回值,该返回值返回继承AbstractClass(ConcreteClass1或ConcreteClass2)的类的类实例?我想关注一个事实,即返回值可以是ConcreteClass1ConcreteClass2,但重要的是它们都是kind_of(AbstractClass)

我在想这样的事情,这是个好方法吗?

# Class MyClassFactory implements the factory pattern for selecting the appropriate class for xxx
def MyClassFactory
  # @return [? < AbstractClass] an instance of a class inheriting AbstractClass
  def create_instance(*args)
     if cond?
       ConcreteClass1
     else
       ConcreteClass2
     end.new(*args)
  end
end

现在假设我的方法返回的是类本身,而不是类实例,这是个好方法吗?

def MyClassFactory
  # @return [? <= AbstractClass] the class to be used
  def select_class
     if cond?
       ConcreteClass1
     else
       ConcreteClass2
     end
  end
end

1 个答案:

答案 0 :(得分:1)

写就足够了

# @return [AbstractClass]

读者应假定可以使用Liskov替代。 Abstract前缀(以及@abstract标记)也将清楚地传达这一点,并且生成的文档将在的“直接已知子类”下列出ConcreteClass1ConcreteClass2AbstractClass

关于返回课程,YARD创建者的recommendation将使用Class<AbstractClass>