2009-12-09 3 views
9

클래스 및 인터페이스를 문서화하는 가장 좋은 방법은 무엇입니까? IFoo라는 인터페이스에서 파생 된 Foo라는 구체적인 클래스가 있다고 가정 해보십시오. 당신은 당신의 방법에 대한 당신의 의견을 어디에 두 었는가? 구체적인 클래스뿐만 아니라 인터페이스에 대한 귀하의 의견을 복제합니까? 나는 일반적으로하지만, 그들은 같은 말을하지 않는, 모두 넣어코드 주석 처리 : 코드 주석을 Interfaces 또는 Concrete 클래스 중 하나 또는 둘 다에 배치합니까?

public class Foo : IFoo 
{ 
    /// <summary> 
    /// This function does something 
    /// </summary>   
    public void DoSomething() 
    { 
    } 
} 

public interface IFoo 
{ 
    /// <summary> 
    /// This function does something 
    /// </summary>   
    void DoSomething(); 
} 

답변

18

거의 항상 인터페이스를 사용한다 코드를 ... 사용할 때 툴팁을 좋아하기 때문에

나는이 작업을 수행. 인터페이스에

나는 인터페이스 멤버 및 사용 배후의 의도에 대해 언급한다.

구현시 특정 구현에 대한 이유를 언급하고자합니다.

+3

+1 ... 그리고 GhostDoc을 사용하는 경우 인터페이스 구성원이 해당 구현에 복사 한 인터페이스 주석을 쉽게 얻을 수 있습니다. – Groo

4

: 여기

는 의견이 중복되는 예입니다. 인터페이스의 주석은이 메소드/인터페이스의 추상적 인 목적을 설명해야합니다. 구체적인 코멘트에서는 인터페이스의 목적에 따라 메소드/클래스의 구현 세부 사항에 대해 설명합니다.

3

나는 모두에 넣어하지만, 의심 나는 단지 인터페이스에 올려 때의 고통, 동기화를 유지. 나는 모두 의견을 둘 것

1

전혀 사용하지 않습니다. 대신 코드를 구조화하고 모든 메소드와 변수의 이름을 설명없이 명확하게 설명합니다. 주석의 문제점은 컴파일되지 않고 실행되지 않으며 유닛 테스트에서 테스트되지 않기 때문에 코드와 동기화하는 것이 거의 불가능하다는 것입니다.

+0

이 주석은 Intellisence와 함께 코드를 이해하는 데 더 유용합니다. 유지하기가 더 어렵다는 점에 동의하지만 API를 탐색하는 데 매우 도움이 될 수 있습니다. –

+0

Heah, 다른 팀의 누군가를 위해 API를 개발할 때 유용하다고 생각합니다. – Grzenio

1

인터페이스에만 해당됩니다. 이 경우에는 동기화 할 필요가 없기 때문입니다. 내 IDE를 사용하면 구체적인 클래스에서 인터페이스 주석을 볼 수 있습니다. 그리고 api 문서 생성기도 똑같습니다.

2

둘 다,하지만 난

3

귀하의 예제 코드는 명시 적 인터페이스 구현을 사용하지 않는 동기화를 유지하는 기능 거기에 지어진 바랍니다. 당신의 코드 클라이언트는 클래스 객체 나 인터페이스 참조를 통해 메소드를 호출 할 수 있기 때문에 둘 다 필요합니다. 명시 적 인터페이스 구현을 사용하면 클라이언트가 클래스 메소드 주석을 볼 수 없기 때문에 클래스 메소드 주석을 생략 할 수 있습니다. 이것은 XML 문서를 사용하여 IntelliSense 정보를 생성한다고 가정합니다. 이 모든 구체적인 구현이 이행해야하는 계약을 정의하기 때문에

2

태그 <referTo>System. .... </referTo>는 의견이

1

가 이상적으로 만 인터페이스를 문서화 할 필요가 이상적 일 것이다 연결합니다.