Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Документирование исходного кода



Язык C# позволяет при написании программы снабжать исходный код особыми документирующими комментариями. Содержимое документирующих комментариев может затем быть выделено и обработано. Так реализуется концепция, при которой сам исходный код содержит необходимую документацию, описывающую его.

Рассмотрим общие принципы документирования кода. Документирующие комментарии – это либо однострочные комментарии, начинающиеся с последовательности ///, либо блочные комментарии, начинающиеся с последовательности /**. Они могут располагаться в любом месте кода, но обычно их помещают перед описанием пользовательского типа или перед методом. Кроме собственно текста, комментарии могут содержать документирующие теги. Теги позволяют выделить некие особые составляющие комментария – например, имя метода, параметры, пример использования. Если в тексте комментария нужно использовать символы < и >, то они заменяются последовательностями &lt; и &gt;. В случае ссылок на универсальные шаблоны имя параметра-типа может быть записано в фигурных скобках { и }.

Таблица 6

Документирующие теги

Тег и синтаксис Описание
<c>text</c> <code>content</code> Позволяют вставить в комментарий текст, являющийся кодом. Второй тег применяется при необходимости вставить несколько строк кода
<example> description </example> Помечает части комментария, являющиеся примером. Обычно данный тег включает тег <code>
<exception cref="member"> description </exception> Показывает, какие исключения может сгенерировать метод. Атрибут cref указывает на существующий тип ИС
<para>content</para> Используется для визуального оформления – выделяет параграф
<param name="name"> description </param> Описывает параметр метода
<paramref name="name"/> Указывает, что элемент комментария является не просто словом, а параметром метода
<remarks> description </remarks> Содержит дополнительное описание
<returns> description </returns> Описание возвращаемого значения метода
<see cref="member"/> <seealso cref="mem"/> Устанавливают ссылки на существующий тип или элемент типа
<summary> description </summary> Содержит основное описание типа или элемента типа
<typeparam name="name"> description </typeparam> Позволяет указать описание generic-параметра
<value> property-description </value> Используется для описания свойства

Ниже приведён фрагмент кода с документирующими комментариями.

/// <summary>

/// Starts the network device.

/// </summary>

/// <see cref="List{T}"/>

/// <param name="startTimeout">The start timeout.</param>

/// <param name="sessionId">The session id.</param>

public bool Start(int startTimeout, int sessionId) {... }

Чтобы выделить документирующие комментарии из исходного кода, можно откомпилировать программу с ключом /doc:file, где file – это имя XML-файла с комментариями. При работе в Visual Studio в свойствах проекта достаточно установить флаг Build | Output | Xml Documentation File.

Заметим, что существуют самостоятельные проекты, которые расширяют возможности встроенной системы документирования кода. Упомянем такие проекты как NDoc и Sandcastle. Также достаточно популярным является GhostDoc – дополнение к Visual Studio, облегчающее генерирование документирующих комментариев.


Литература

1. Албахари, Дж. C# 3.0. Справочник: Пер. с англ. / Дж. Албахари, Б. Албахари. – 3-е изд. – Спб.: БХВ-Петербург, 2009. – 944 с.: ил.

2. Рихтер, Дж. CLR via C#. Программирование на платформе Microsoft.NET Framework 4.0 на языке C# / Дж. Рихтер. – 3-е изд. – Спб.: Питер, 2012. – 928 с.: ил.

3. Троелсен, Э. Язык программирования C# 2010 и платформа.NET 4.0 / Э. Троелсен. – 5-е изд. – М.: ООО «И.Д. Вильямс», 2011. – 1392 с.: ил.

4. Хейлсберг, А. Язык программирования C#. Классика Computers Science. / А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд. – 4-е изд. – Спб.: Питер, 2012. – 784 с.: ил.

5. Цвалина, К. Инфраструктура программных проектов: соглашения, идиомы и шаблоны для многократно используемых библиотек.NET.: Пер. с англ. / К. Цвалина. – М.: ООО «И.Д. Вильямс», 2011. – 416 с.: ил.


[1] При записи целочисленных литералов не рекомендуется использовать суффикс l (строчная латинская буква L), так как его легко перепутать с единицей.

[2] В C# имеется директива using для импорта пространств имён. Следует различать директиву using и оператор using.

[3] Объявление int[,][] data задаёт двумерный массив, состоящий из одномерных массивов. Иными словами, спецификаторы размерностей читаются слева направо.

[4] В CLR есть модификатор доступа, соответствующий protected и internal. Но при помощи языка C# такой уровень доступа описать нельзя.

[5] Разделяемыми могут быть не только классы, но также структуры и интерфейсы.

[6] Для доступа к константе применяется синтаксис имя-класса.имя-константы.

[7] Индексаторы транслируются в методы с именами get_Item() и set_Item(). Изменить имена методов можно, используя атрибут [IndexerName].

[8] В отличие от языка C#, CLR позволяет создавать статические индексаторы.

[9] Язык C# допускает только методы расширения, свойств и индексаторов расширения не существует.

[10] Если класс содержит статический конструктор (возможно, пустой), компилятор C# генерирует код, выполняющий инициализацию статических полей класса непосредственно перед первым использованием класса. Без статического конструктора такая инициализация проводится в произвольный момент до использования класса.

[11] Формально, от object не наследуются типы-указатели, используемые в неуправляемом коде (например, int*), а также интерфейсы (но интерфейсы приводятся к object).

[12] Операция упаковки выполняется и в случае, когда переменной типа интерфейс присваивается переменная типа значения. Этот аспект будет разобран при рассмотрении интерфейсов.

[13] В отличие от классов, в структуре конструктор без параметров присутствует даже при объявлении пользовательского конструктора.

[14] И класс Stack<T>, и класс Dictionary<K, V> рассмотрены только как примеры. В.NET Framework уже имеются полноценные аналоги данных классов.

[15] Универсальные методы могут заменить перекрытие методов в пользовательском типе, если алгоритмы работы различных версий перекрытых методов не зависят от типов параметров.

[16] Делегаты относятся к неизменяемым типам. Поэтому методы Combine() и Remove() возвращают новые объекты-делегаты.

[17] Если аргументов несколько, скобки нужно указывать. Когда лямбда-оператор не имеет входных аргументов, указываются пустые скобки.

[18] Поведение, аналогичное событиям, можно получить, используя открытие поля делегатов. Ключевое слово event заставляет компилятор проверять, что описание и генерация события происходят в одном классе, и запрещает для события все операции, кроме += и -=.





Дата публикования: 2015-11-01; Прочитано: 519 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...