Skip to content

Commit ebe95a0

Browse files
committed
Комментарии, рефакторинг
1 parent 53e778e commit ebe95a0

3 files changed

Lines changed: 126 additions & 1 deletion

File tree

.github/copilot-instructions.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
- Каждый тег XML‑комментария располагай на отдельной строке
1414
- Порядок тегов: `<summary>``<param>``<returns>``<exception>``<remarks>``<example>`
1515
- Для сложных публичных метдов генерируй блок с простым примером использования кода внутри тега `<example>`
16+
- Примеры использования кода внутри тега `<example>` должны быть лаконичными и демонстрировать только ключевые моменты использования метода, без избыточных деталей
17+
- Примеры кода нужно заворачивать в тег `<code>` внутри тега `<example>`, чтобы обеспечить правильное форматирование и подсветку синтаксиса, а также размещать в элементе `<![CDATA[ ]]>` что бы не использовать экранирование xml-символов
1618

1719
Примеры:
1820
- `<summary>Краткое описание сущности</summary>`
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
name: documentPublicApi
3+
---
4+
# Документирование публичного API
5+
6+
Проверь и дополни файл полной XML-документацией для типа (класса, интерфейса, структуры) и всех его публичных членов.
7+
8+
## Документирование класса/типа
9+
10+
Добавь комментарий к самому классу/типу с:
11+
- `<summary>` — краткое описание назначения и функциональности
12+
- `<remarks>` — дополнительная информация о возможностях и ограничениях (опционально)
13+
- `<example>` — практический пример, демонстрирующий основные сценарии использования класса
14+
15+
## Документирование публичных членов
16+
17+
Убедись, что все публичные члены задокументированы — методы, свойства, события, события должны иметь полный набор тегов:
18+
- `<summary>` — краткое описание (одна строка, без точки в конце)
19+
- `<param>` — для параметров методов (если они есть)
20+
- `<returns>` — для возвращаемого значения
21+
- `<value>` — для свойств, описывающее значение
22+
- `<exception>` — для исключений, которые может выбросить метод
23+
- `<remarks>` — дополнительная информация (опционально)
24+
- `<example>` — примеры использования для сложных публичных методов
25+
26+
## Требования к комментариям
27+
28+
1. **Язык:** все комментарии на русском языке — переведи существующие английские комментарии
29+
2. **Примеры использования:**
30+
- Добавь блок `<example>` с практическим примером кода
31+
- Обёрнь код в `<code language="csharp"><![CDATA[ ... ]]></code>`
32+
- Для класса: покажи типичные сценарии использования его основной функциональности
33+
- Для методов: продемонстрируй типичный вызов и результат
34+
3. **Структура:**
35+
- Порядок тегов: `<summary>``<param>``<returns>``<value>``<exception>``<remarks>``<example>`
36+
- Каждый тег на отдельной строке
37+
- Одинарное предложение в одной строке без точки в конце внутри тега
38+
39+
## Минимизация изменений
40+
41+
Изменяй только документацию — не переписывай существующий код, не добавляй новые члены класса, не рефакторь реализацию.

MathCore.WPF/Taskbar/Taskbar.cs

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,28 @@
77

88
namespace MathCore.WPF.Taskbar;
99

10+
/// <summary>Предоставляет функциональность для работы с панелью задач Windows</summary>
11+
/// <remarks>
12+
/// Класс позволяет получить информацию о состоянии, размерах и положении панели задач,
13+
/// а также управлять её видимостью. Все члены класса статические.
14+
/// </remarks>
15+
/// <example>
16+
/// <code language="csharp"><![CDATA[
17+
/// // Получение информации о панели задач
18+
/// var position = Taskbar.Position;
19+
/// var bounds = Taskbar.CurrentBounds;
20+
/// var autoHide = Taskbar.AutoHide;
21+
///
22+
/// Console.WriteLine($"Положение: {position}");
23+
/// Console.WriteLine($"Границы: {bounds}");
24+
/// Console.WriteLine($"Автоскрытие: {autoHide}");
25+
///
26+
/// // Управление видимостью
27+
/// Taskbar.Hide(); // Скрыть панель задач
28+
/// System.Threading.Thread.Sleep(3000);
29+
/// Taskbar.Show(); // Показать панель задач
30+
/// ]]></code>
31+
/// </example>
1032
[Copyright("franzalex", url = "https://gist.github.com/franzalex/e747e6b318ab8f328aa02301f25ec534")]
1133
public static class Taskbar
1234
{
@@ -22,13 +44,21 @@ private enum ABS
2244
/// <summary>Статический инициализатор класса <see cref="Taskbar" /></summary>
2345
static Taskbar() => _AppBarData = new()
2446
{
25-
cbSize = (uint)Marshal.SizeOf(typeof(AppBarData)),
47+
cbSize = (uint)Marshal.SizeOf<AppBarData>(),
2648
hWnd = User32.FindWindow(ClassName, null)
2749
};
2850

2951
/// <summary>Возвращает значение, указывающее, что панель задач всегда поверх других окон</summary>
3052
/// <value><c>true</c>, если панель задач всегда поверх других окон; иначе <c>false</c></value>
3153
/// <remarks>Это свойство всегда возвращает <c>false</c> в Windows 7 и новее</remarks>
54+
/// <example>
55+
/// <code language="csharp"><![CDATA[
56+
/// if (Taskbar.AlwaysOnTop)
57+
/// {
58+
/// Console.WriteLine("Панель задач всегда отображается поверх других окон");
59+
/// }
60+
/// ]]></code>
61+
/// </example>
3262
public static bool AlwaysOnTop
3363
{
3464
get
@@ -40,6 +70,14 @@ public static bool AlwaysOnTop
4070

4171
/// <summary>Возвращает значение, указывающее, что панель задач автоматически скрывается при неактивности</summary>
4272
/// <value><c>true</c>, если включено автоскрытие панели задач; иначе <c>false</c></value>
73+
/// <example>
74+
/// <code language="csharp"><![CDATA[
75+
/// if (Taskbar.AutoHide)
76+
/// {
77+
/// Console.WriteLine("Панель задач автоматически скрывается");
78+
/// }
79+
/// ]]></code>
80+
/// </example>
4381
public static bool AutoHide
4482
{
4583
get
@@ -50,6 +88,13 @@ public static bool AutoHide
5088
}
5189

5290
/// <summary>Возвращает текущие границы отображения панели задач</summary>
91+
/// <value>Прямоугольник, представляющий текущие границы панели задач, или <see cref="Rectangle.Empty"/> при ошибке</value>
92+
/// <example>
93+
/// <code language="csharp"><![CDATA[
94+
/// Rectangle bounds = Taskbar.CurrentBounds;
95+
/// Console.WriteLine($"Ширина: {bounds.Width}, Высота: {bounds.Height}");
96+
/// ]]></code>
97+
/// </example>
5398
public static Rectangle CurrentBounds
5499
{
55100
get
@@ -62,6 +107,13 @@ public static Rectangle CurrentBounds
62107
}
63108

64109
/// <summary>Возвращает границы отображения при полностью видимой панели задач</summary>
110+
/// <value>Прямоугольник, представляющий границы видимой панели задач</value>
111+
/// <example>
112+
/// <code language="csharp"><![CDATA[
113+
/// Rectangle displayBounds = Taskbar.DisplayBounds;
114+
/// Console.WriteLine($"Панель задач расположена в пределах: {displayBounds}");
115+
/// ]]></code>
116+
/// </example>
65117
public static Rectangle DisplayBounds =>
66118
RefreshBoundsAndPosition()
67119
? Rectangle.FromLTRB(
@@ -72,20 +124,50 @@ public static Rectangle CurrentBounds
72124
: CurrentBounds;
73125

74126
/// <summary>Возвращает дескриптор окна панели задач</summary>
127+
/// <value>Дескриптор окна (IntPtr) панели задач</value>
128+
/// <example>
129+
/// <code language="csharp"><![CDATA[
130+
/// IntPtr hWnd = Taskbar.Handle;
131+
/// if (hWnd != IntPtr.Zero)
132+
/// {
133+
/// Console.WriteLine("Панель задач найдена");
134+
/// }
135+
/// ]]></code>
136+
/// </example>
75137
public static IntPtr Handle => _AppBarData.hWnd;
76138

77139
/// <summary>Возвращает положение панели задач на экране</summary>
140+
/// <value>Перечисление <see cref="TaskbarPosition"/>, указывающее положение панели</value>
141+
/// <example>
142+
/// <code language="csharp"><![CDATA[
143+
/// TaskbarPosition position = Taskbar.Position;
144+
/// Console.WriteLine($"Панель задач расположена: {position}");
145+
/// ]]></code>
146+
/// </example>
78147
public static TaskbarPosition Position => RefreshBoundsAndPosition()
79148
? (TaskbarPosition)_AppBarData.uEdge
80149
: TaskbarPosition.Unknown;
81150

82151
private const int SW_HIDE = 0;
152+
83153
/// <summary>Скрывает панель задач</summary>
154+
/// <example>
155+
/// <code language="csharp"><![CDATA[
156+
/// Taskbar.Hide();
157+
/// Console.WriteLine("Панель задач скрыта");
158+
/// ]]></code>
159+
/// </example>
84160
public static void Hide() => _ = User32.ShowWindow(Handle, SW_HIDE);
85161

86162
private const int SW_SHOW = 1;
87163

88164
/// <summary>Показывает панель задач</summary>
165+
/// <example>
166+
/// <code language="csharp"><![CDATA[
167+
/// Taskbar.Show();
168+
/// Console.WriteLine("Панель задач отображается");
169+
/// ]]></code>
170+
/// </example>
89171
public static void Show() => _ = User32.ShowWindow(Handle, SW_SHOW);
90172

91173
private static bool RefreshBoundsAndPosition() =>

0 commit comments

Comments
 (0)