2012-04-25 3 views
1

나는 프로젝트를 문서화하고 있고 essientially 나는 다음과 유사한 있습니다동적 문서화, 다른 YARD의 설명에서 메서드 반환을 사용합니까?

def foo 
    return bar(__method__) 
end 

def bar (method) 
return method.to_s + 'somestring' 
end 

나는 그들이 바의 수익을 반환하는있는 foo는 구현 방법과 유사한 방법의 다수를 설정하고있다.

# The descriptions for foo0... 
# @return [String] the method name concatenated with somestring 
def foo0 
    return bar(__method__) 
end 
# The descriptions for foo1... 
# @return [String] the method name concatenated with somestring 
def foo1 
    return bar(__method__) 
end 

# The descriptions for bar... 
# @return [String] the method name concatenated with somestring 
def bar (method) 
return method.to_s + 'somestring' 
end 

을하지만 bar 내 문서가 잘못된 다음 정수로 반환하는 내용을 변경 말을 다음과 같이 예입니다. 나는 YARD의 DSL 문서화에 익숙하지만, 다른 메소드를 설명 할 때 bar 메소드 반환의 반환 유형을 #[email protected]으로 지정하는 방법은 무엇입니까?

# The descriptions for foo0... 
# @return [#[email protected]] the method name concatenated with somestring 
def foo0 
    return bar(__method__) 
end 
# The descriptions for foo1... 
# @return [#[email protected]] the method name concatenated with somestring 
def foo1 
    return bar(__method__) 
end 

# The descriptions for bar... 
# @return [String] the method name concatenated with somestring 
def bar (method) 
return method.to_s + 'somestring' 
end 

궁극적으로 내가 무엇을 달성하려고하는 또 다른 방법으로 정의되는 사항에 대한 의존 반환 유형 등의 절대성을 정의 할 필요없이 내 코드를 문서화하는 것입니다 : 다음과 같다 내가 무엇을 말하는거다의 예 있다.

UPDATE : 나는 당신이 # @return (see #bar)를 호출 할 수 있습니다 그것은 반환 또는 bar 방법과 동일 foo 방법을 표시해야하지만 반환되는 유형을 얻을 방법을 간단하게 확인할 수 없습니다임을 발견했다 /foo에 대한 사용자 정의 설명이있는 bar에 대한 반품 설명에 과부하가 걸릴 수 있습니다.

답변

1

발견 한대로 을 사용하여 @return 태그를 #bar 그대로에서 다른 docstrings으로 복사해야합니다. 참고 : 설명 텍스트도 복사됩니다. 메소드의 유형을 보간하는 방법은 없습니다. 당신은 당신의 특정한보기에서 그것을 필요로하지 않는 것처럼 보입니다.

+0

상속 된 설명을 오버로드하지만 상속 된 반환 형식 만 사용하는 방법이 있습니까? – rudolph9

+0

불행히도, 아니오. 야드는 일을 잘 유지하는 데만 잘 작동합니다. 정말로 낮은 수준의 세밀도로 대체해야하는 경우 YARD는 매우 훌륭하게 작업하지 않습니다. 즉, API가 자주 변경되면 델타를 지역화하기 위해 부품 분리를 고려해야합니다. –

+0

완전히 DRY 구현을 위해 노력하고있는 REST API 인터페이스를 작성 중입니다. [여기] (https://github.com/RudyIndustries/shopsense-ruby/blob/master/lib/shopsense/api.rb) API를 호출하는 클래스입니다. DSL을 정의하는 작업을하고 있는데, 입력해야하는 것은 메소드의 이름, 메소드의 수 (메소드마다 다른) 및 기본값입니다. 뿐만 아니라 문서가 DRY 상태가되기를 바랍니다. 각 메소드에는 공통적 인 리턴 유형이 있지만 각각은 리턴하는 내용에 대해 약간 다른 설명이 있습니다. – rudolph9