Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML коментарии в коде, как правильно писать коментарии к коду 
:(
    Опции темы
thomas
Дата 16.10.2006, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 3
Всего: 65



Приветствую всех.
В продолжение и развивая тему работы с классами, предлагаю осветить такой вопрос.
Мы знаем что в VS2003 в C# и в  VS2005 в C# а так же в VB.NET есть возможность вызывать блок XML коментариев.
К примеру
Код

    ''' <summary>
    ''' что пишем здесь?
    ''' </summary>
    ''' <param name="tabel">что пишем здесь?</param>
    ''' <param name="ind1">что пишем здесь?</param>
    ''' <param name="ind2">что пишем здесь?</param>
    ''' <remarks>что пишем здесь?</remarks>
    Private Sub swaap(ByVal tabel() As Integer, ByVal ind1 As Integer, ByVal ind2 As Integer)
        Dim hulp As Integer
        hulp = tabel(ind1)
        tabel(ind1) = tabel(ind2)
        tabel(ind2) = hulp
    End Sub

Вопрос лишь в том как правильно использовать эту возможность? Что, где и как следует ПРАВИЛЬНО писать? И где эти коментарии потом мы увидим?

Вопрос, по моему, не праздный. Потому как, во многих обьявлениях о найме на работу, я видел требование - умение ГРАМОТНО писать коментарии к коду.
Да и предуманы эти коментарии наверное не зря. Они призваны помочь нам в написании кода программы. Когда программа не большая особой необходимости в коментариях не возникает.
Но если программа довольно большая и необходимо использовать многократно различные классы и в разных местах, то необходимость правильных коментариев к классам, методам и функциям резко возрастает.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
DarkDragon
Дата 17.10.2006, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



thomas, здарова!

И так XML комментарии, это XML код обьявляемый в виде коментариев в языках.NET. 
По сути дело это метаданные, встраивающиеся вместе с компиляцией сборок(Assemblies, это может быть как приложение ввиде Executable файла, либо библиотека (dll)). Когда то я попробовал скопировать сборку System.Windows.Forms, установив параметр CopyLocal в True, и как вы думаете, что я увидел? Саму сборку и прилогающийся к нему XML фаил, с описанием классов, функций, etc... Я такое проделовал в VS.NET 2003.

Для чего и для кого же они существуют?
Данный коментарии создаются для разработчиков, проектирующих(разрабатывающих) на языках .NET. Создаются они с целью помочь, ориентироваться в классах, процедурах, параметрах, и т. д. сборок(Assemblies). Проще говоря XML коментарии описывают разработчику, классы, процедуры, и т. д. Дело в том что Microsoft построило(а может быть и просто встроила) технологию "Метаданных" и теперь она выкачивает все возможное из этой технологии. Визуальная студия (Visual Studio.NET), как в режиме редактирования кода, так и в режиме конструирования форм, умеет извлекать эти метаданные, и вообщемто показывать их разработчику.

Где мы это можем увидеть?
Как было выше сказанно в редакторе кода, и конструктора форм.
Чтобы было всем понятно попробую нарисовать всю вам эту картинку.

Смотрим в конструкторе форм:
Создадим новый проект (Windows Application), открывается первая форма(Form1), создаем кнопку(Button), на форме естественно. Далее идем в окно Properties, специальное окошко, где ввиде таблицы параметров, отображаются свойства выделенного обьекта, на форме(форма тоже включается вкачестве выделяемого обьекта). Далее в окне "Properties" идем в категорию "Appearance", и выбераем свойство "Text". Когда мы выделим данное свойство обьекта, то можем заметить небольшое сообщение, в самом низу таблицы, которое выглядит примерно так:

Text
The text contained in the control.

VS.NET описывает нам выделенное свойство, выделеного обьекта.


Смотрим в редакторе кода:
Кто редактировал свой код в VS.NET, часто замечал всплывающиеся подзказки(надеюсьsmile), именно данные подсказки, были описанны с помощью XML кода, обьявляемого ввиде коментариев. Подсказка - это желтое окошко (без оформления), содержащая определенный текст.

Например напишем процедуру ViewComment(), буду писать на C#, т. к. в VS.NET 2003, только он поддерживает XML коментарии.
Код

    public void ViewComment()
    {
        this.Text
    }

Навидя курсор мыши на слово [Text], выплывает подсказка с текстом, который описывается с помощью тэга [<summary>],
это такой текст, который дает нам понять смысл данного свойства. Вообще часто разработчики Microsoft, коментируют свойства, так: Get or set....., о чем мы можем сделать следующий вывод о данном свойстве:
1. Если коментарий содержит слова Get(получить) or(или) set(установить), значить мы можем как установить, так и получить значение определенного свойства. Такие свойства обьявляются вот так: Public Property [Name]() As [Type]
2. Если коментариий содержит только слово Get, то мы может только получить значение. Такие свойства обьявляются так:
Public ReadOnly Property [Name]() As [Type].
3. Если коментарий содержит только слово Set, значить мы может только установить значение. Обьявляются так: Public WriteOnly Property [Name]() As [Type].

Идем дальше!
Что нам дает тэг [<param name>].
///<param name="[Название параметра, обьявленного в процедуре, или в свойстве]">Описание данного параметра<\param>. Такой XML скрипт коментирует конкретный параметр.

Если скажем вызвать процедуру FromArgb у структуры Color, то мы увидим подсказку, содержащую имена передаваемых параметров, и внизу коментарии к активному параметру.
Код

   Color.FromArgb (red, green, blue);

Когда нам нужно будет ввести параметер (красный компонент цвета[red]) то увидим следующую подсказку:
red: The red component value for the new System.Drawing.Color structure. Valid values are 0 through 255. 
По русски: Значение красного компонента для новой структуры Color. Правильное значение может быть от 0 до 255.
Для green, blue мы получим почти такие же подсказки.

Собираем все вместе!
<summary> - коментирует класс, процедуру, свойство, etc...
<param> - коментирует отдельный параметр процедуры, или свойства.
<remarks> - незнаю что именно каментирует, но вобщем переводится как "замечание"

Становимся коментатарамиsmile
Код

///<summary>
///Данная процедура создает структуру [Color], из 3-ех компонентов.
///</summary>
///<param name="red">Красный компонент цвета</param>
///<param name="green">Зеленый компонент цвета</param>
///<param name="blue">Синий компонент цвета</param>
///<remarks>Все параметры данной процедуры, могут содержать значения от 0 до 255, впротивном случаи, получите ошибку!</remarks>
System.Drawing.Color ToColor (int red, int green, int blue)
{
   return System.Drawing.Color.FromArgb (red,green,blue);
}

Заметьте что я обьявляю коментарии перед тем что я именно хочу прокоментировать(за исключением параметров, но параметры относятся именно к процедуре ToColor). 

Для чего всё это?
Для того чтобы такие программисты как мы, знали что к чему, зачем, и какsmile

Где нам применять все это?
 - Создание библиотеки для программистов. Так программисты оценят вашь уровень, и желание(с которым вы писали код)smile
 - Создание сложного проекта. Так вы сами себе облегчите трудsmile
и вообще много в каких ситуация можно применять XML коментированиеsmile

Главное:
 - Коментарии должны быть понятными.
 - Кто будет их читать, должен иметь редактор который умеет извлекать эти коментарии. Пример VS.NET:)

thomas, коментирую твой код:
Код

    ''' <summary>
    ''' Функция для обмена занчений внутри массива.
    ''' </summary>
    ''' <param name="tabel">Таблица представленная ввиде массива целых чисел, в которой нужно произвести обмен.</param>
    ''' <param name="ind1">Первый индекс элемента массива</param>
    ''' <param name="ind2">Второй индекс элемента массива</param>
    ''' <remarks>Обменяем первый элемент на второй:)</remarks>
    Private Sub swaap(ByVal tabel() As Integer, ByVal ind1 As Integer, ByVal ind2 As Integer)
        Dim hulp As Integer
        hulp = tabel(ind1)
        tabel(ind1) = tabel(ind2)
        tabel(ind2) = hulp
    End Sub

PM MAIL   Вверх
thomas
Дата 17.10.2006, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 3
Всего: 65



DarkDragon, 
Приветствую.
Конкретное описание.  Гуру smile   smile 

Там еще есть тег <returns>. Если логически рассуждать, то это наверное относиться только к функциям, т.к. только они имеют возвращаемое значение.
Да и еще я встретил тег <history>. Это наверное относиться к "истории", но как пользовать еще не дотумкал.  smile 


Да вот еще, обнаружил данные линки на другом форуме. Это для тех кто хочет иметь XML коментарии в VB.NET VS2003 (в VS 2005 уже есть встроенные)
http://vbxc.tor-erik.net/
http://www.codeproject.com/vb/net/VbCommenter.asp

Надеюсь вам это поможет.  smile 



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Exception
Дата 17.10.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Ага, всё верно. Только вот XML-комментарии не встраиваются в метаданные, а записываются в отдельный XML-файл (его генерацию нужно включить в свойствах проекта).

<summary> - это краткое описание элемента, его предназначения.
<remarks> - это замечания (то, что не было оговорено в <summary>).
<param> - это параметр метода/свойства.
<returns> - это описание возвращаемого методом значения.
<example> - это пример использования элемента.
Остальные по памяти не знаю, так что вам сюда.
PM   Вверх
ivashkanet
Дата 17.10.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(Exception @  17.10.2006,  12:00 Найти цитируемый пост)
 Только вот XML-комментарии не встраиваются в метаданные

А откуда же берутся всплювающие подсказки над методами? Если метаданных нет, а XML забыли скопировать  smile 
PM MAIL WWW ICQ   Вверх
Exception
Дата 17.10.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Ниоткуда. Их не будет. К твоему сведению, все XML от библиотек .NET Framework лежат в его папке. Разумеется, копировать их в bin не нужно.
PM   Вверх
ivashkanet
Дата 17.10.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Exception, точно. Удаляешь xml-файл и "коментарии" пропадают smile
PM MAIL WWW ICQ   Вверх
DarkDragon
Дата 17.10.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Насчет метаданных погарячилсяsmile
Сейчас вот кавырялся и нашел где задавать этот XML фаил:
Project Properties => Configuration Properties => Build => Outputs => XML Documentation File.

Это конечно же в проекте на C# в VS.NET 2003.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.