인터페이스 구현에 대한 문서를 복제 / 좋거나 나쁘게 무시합니까?


20

그래서 우리는 이와 같은 인터페이스를 가지고 있습니다

/// <summary>
/// Interface for classes capable of creating foos
/// </summary>
public interface ICreatesFoo
{
  /// <summary>
  /// Creates foos
  /// </summary>
  void Create(Foo foo);
  /// <summary>
  /// Does Bar stuff
  /// </summary>
  void Bar();
}

최근에 우리는 위와 같이 많은 XML 문서가 생성되고 보장되는 문서 스토리를 재생했습니다. 이로 인해 문서가 많이 중복되었습니다. 구현 예 :

/// <summary>
/// A Foo Creator which is fast
/// </summary>
public class FastFooCreator : ICreatesFoo
{
  /// <summary>
  /// Creates foos
  /// </summary>
  public void Create(Foo foo)
  {
    //insert code here
  }
  /// <summary>
  /// Does Bar stuff
  /// </summary>
  public void Bar()
  {
    //code here
  }
}

보시다시피 메소드 문서는 인터페이스에서 직접 추출한 것입니다.

가장 큰 질문은 이것이 나쁜 것입니까? 내 직감은 복제 때문에 예라고 말하지만 다시는 아닐까요?

또한, 우리는 override기능과 virtual기능을 가진 다른 유사한 문서 복제가 있습니다.

이것이 나쁘거나 피해야합니까? 전혀 가치가 있습니까?


Resharper를 사용하는 경우 구현에서만 주석을 변경 한 다음 "Pull members up"을 사용하여 인터페이스를 업데이트 할 수 있습니다.
vortexwolf

나는 이것을하지만 어쩌면 외부 도구를 사용하는 것이 좋지 않고 인터페이스의 헤더 파일로 이동하여 특정 유형의 작업으로 수행 할 수있는 작업을 보는 것을 선호합니다 (이것은 분리 된 C 및 C ++ 용입니다. 소스 파일의 헤더 개념). 약간 반복적이지만 메소드를 재정의하는 구체적인 클래스와 관련된 특정 세부 정보를 추가 할 수있는 기회를 찾으려고합니다. 예를 들어 좋아합니다. 그렇지 않으면 중요한 것을 생략 한 것처럼 OCD가 있습니다. 헤더 파일의 모든 함수에 대한 주석을 참조하십시오.

실제로 Doxygen 주석과 태그를 사용하지만 실제로 코딩 과정에서 문서를별로 보지 않습니다. 헤더 파일로 이동하여 무엇을 할 수 있는지 확인하는 것을 선호합니다. 새로운 습관과 도구를 줍는 데 어려움을 겪고있는 오래된 개의 경우 일 수 있습니다.

답변:


9

일반적으로, 구현에 대해 언급해야 할 특정 사항 있는 경우 구현 방법에 새 문서 만 추가 합니다.

javadoc에서는 다른 메소드에 링크 할 수 있으며, 인터페이스의 메소드 문서에 대한 구현에서 링크를 작성할 수 있습니다. 나는 이것이 .Net에서 수행되어야하는 방법이라고 생각합니다 (내 경험이 아닌 온라인 문서를 읽은 것에 근거를두고 있습니다).

/// <summary>
/// Interface for classes capable of creating foos
/// </summary>
public interface ICreatesFoo
{
  /// <summary>
  /// Creates foos
  /// </summary>
  void Create(Foo foo);
  /// <summary>
  /// Does Bar stuff
  /// </summary>
  void Bar();
}

/// <summary>
/// A Foo Creator which is fast
/// </summary>
public class FastFooCreator : ICreatesFoo
{
  /// <summary>
  /// <see cref="ICreatesFoo.Create(Foo)"/>
  /// </summary>
  public void Create(Foo foo)
  {
    //insert code here
  }
  /// <summary>
  /// <see cref="ICreatesFoo.Bar()"/>
  /// Also Note: Implementation of Bar() in FastFooCreator
  /// requires a minimum of 512 MB RAM to Bar the Foo. 
  /// </summary>
  public void Bar()
  {
    //code here
  }
}

<see/>요소에 대한 설명서 : http://msdn.microsoft.com/en-us/library/acd0tfbe.aspx


상속 된 클래스에서 XML 문서를 재정의하는 것은 어떻습니까? 하위 클래스를 Collection<T>만들고 Count속성 XML 문서 를 재정의하고 싶다고 가정 해보십시오.
Shimmy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.