Dokumentowanie kodu — komentarze XML i instrukcja

Program, którego nikt poza autorem nie potrafi uruchomić, jest gotowy tylko w połowie. Ta lekcja jest o drugiej połowie — i o tym, czego wymaga się na egzaminie zawodowym.

C# komentarze XML README instrukcja 40 min
CEL LEKCJI

Czego się dziś nauczysz

  • Opiszesz metodę komentarzem XML z parametrami, wynikiem i wyjątkami
  • Włączysz generowanie pliku dokumentacji w projekcie
  • Odróżnisz komentarz potrzebny od komentarza powtarzającego kod
  • Napiszesz README dla programisty i instrukcję dla użytkownika
  • Przygotujesz raport z testów w postaci tabeli przypadków

Przygotowanie: lekcje 01–56. Przewidywany czas: 45–90 minut z zadaniami. Przykłady wymagają .NET 8 lub nowszego, z włączonymi ImplicitUsings i Nullable.

TEORIA

Komentarze dokumentacyjne

Zwykły komentarz // widzi tylko ten, kto czyta plik. Komentarz zaczynający się od trzech ukośników trafia do podpowiedzi edytora i do pliku dokumentacji.

Program.cs
/// <summary>
/// Oblicza srednia arytmetyczna ocen.
/// </summary>
/// <param name="oceny">Tablica ocen z zakresu 1-6. Nie moze byc pusta.</param>
/// <returns>Srednia jako liczba rzeczywista.</returns>
/// <exception cref="ArgumentException">
/// Gdy tablica jest pusta albo rowna <c>null</c>.
/// </exception>
public static double Srednia(int[] oceny)
{
    // ...
}

Gdy ktoś napisze Oceny.Srednia(, edytor pokaże mu ten opis razem z listą parametrów. Nie musi otwierać twojego pliku ani zgadywać, co się stanie przy pustej tablicy.

ZnacznikDo czego
<summary>jedno–dwa zdania: co metoda robi. Nie jak.
<param name="x">znaczenie parametru i dopuszczalne wartości
<returns>co metoda zwraca, także w przypadkach szczególnych
<exception cref="T">kiedy metoda zgłasza wyjątek danego typu
<remarks>uwagi dodatkowe, ograniczenia, wydajność
<example>krótki przykład użycia
<c> i <code>fragment kodu w treści opisu — krótki i wielowierszowy

Żeby dokumentacja powstała jako plik XML, dopisz do pliku projektu:

Projekt.csproj
<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

Komentarz, który kłamie, jest gorszy niż jego brak

Opis <summary> zostaje przy metodzie po zmianie jej działania i po cichu wprowadza w błąd. Przy każdej poprawce metody przeczytaj jej opis. Jeśli nie zamierzasz go utrzymywać — nie pisz go.

TEORIA

Komentarz, który warto napisać

Komentarz nie ma powtarzać kodu. Ma powiedzieć to, czego z kodu nie widać: dlaczego.

ZamiastNapisz
i++; // zwieksz i o jedennic — to widać
// petla po tablicynic — to też widać
// limit 100 wynika z rozmiaru arkusza egzaminacyjnego
// sortujemy kopie, bo oryginalna kolejnosc jest potrzebna w raporcie
// TryParse zamiast Parse: uzytkownik czesto wkleja spacje

Najlepszy komentarz to dobra nazwa. Zmienna licznikBlednychWierszy nie potrzebuje wyjaśnienia, którego wymaga x2 (lekcja 05).

TEORIA

Trzy dokumenty przy projekcie

Podstawa programowa wymaga od technika programisty nie tylko kodu, ale i dokumentacji. W praktyce chodzi o trzy różne teksty dla trzech różnych czytelników.

DokumentDla kogoCo zawiera
READMEprogramista, który dostanie projektdo czego służy program, wymagania (.NET 8), jak zbudować i uruchomić, jak puścić testy, układ folderów
Instrukcja użytkownikaosoba, która ma programu używaćco program robi, opis każdej opcji menu, format wprowadzanych danych, opis komunikatów o błędach, typowy scenariusz krok po kroku
Raport z testównauczyciel, zespół, klientlista przypadków testowych, dane wejściowe, wynik oczekiwany, wynik otrzymany, status oraz opis znalezionych błędów
README.md
# Turniej szkolny

Konsolowa obsluga turnieju: dodawanie uczestnikow, ranking, zapis raportu.

## Wymagania
- .NET 8 lub nowszy

## Uruchomienie
    dotnet run --project Turniej.Konsola

## Testy
    dotnet test

## Format pliku raportu
Kazdy wiersz: `imie;punkty`, kodowanie UTF-8.
Punkty: liczba calkowita 0-100. Wiersze niepoprawne sa pomijane z komunikatem.

Raport z testów zapisuj w trakcie, nie po

Tabelka z kolumnami przypadek / dane / oczekiwane / otrzymane / status wypełniana przy każdym sprawdzeniu zajmuje minutę. Odtwarzanie jej z pamięci dzień przed oddaniem projektu zajmuje godzinę i zwykle wychodzi nieprawdziwa.

CZĘSTE BŁĘDY

Na co uważać

ZapisProblem
Komentarz powtarzający kodZajmuje miejsce i starzeje się szybciej niż kod.
<summary> opisujący implementacjęPo refaktoryzacji przestaje być prawdziwy. Opisuj zadanie, nie sposób jego wykonania.
Zakomentowany stary kodDo tego służy system kontroli wersji. W pliku zostaje śmieć, którego nikt nie odważy się usunąć.
<param> z nieistniejącą nazwąOstrzeżenie kompilatora CS1572 i mylące podpowiedzi.
Instrukcja użytkownika pisana językiem programistyUżytkownik nie wie, czym jest wyjątek ani tablica. Pisz o tym, co widzi na ekranie.
Brak opisu formatu danychNajczęstsze pytanie do każdego programu konsolowego brzmi „a jak mam to wpisać?”.
ZADANIA

Zadania

ZAD 1Opisz trzy metody★☆☆

Dodaj komentarze XML do trzech dowolnych metod z wcześniejszych lekcji: <summary>, <param> i <returns>. Sprawdź w edytorze, czy podpowiedź się pojawia.

ZAD 2Wyjątki w dokumentacji★☆☆

Uzupełnij dokumentację metody Srednia o znacznik <exception> dla każdego wyjątku, który może zgłosić.

ZAD 3Plik XML★★☆

Włącz GenerateDocumentationFile, zbuduj projekt i znajdź powstały plik XML. Otwórz go i porównaj z komentarzami w kodzie.

ZAD 4Usuń zbędne★★☆

Weź własny program z dowolnej wcześniejszej lekcji i usuń wszystkie komentarze powtarzające kod. Te, które zostaną, przepisz tak, żeby odpowiadały na pytanie „dlaczego”.

ZAD 5README★★☆

Napisz README dla jednego ze swoich programów: opis, wymagania, uruchomienie, format danych, znane ograniczenia. Daj do przeczytania koledze i popraw to, o co zapytał.

ZAD 6Komplet dokumentacji★★★

Dla projektu końcowego przygotuj README, instrukcję użytkownika i raport z testów w postaci tabeli. Instrukcja ma opisywać wszystkie opcje menu i wszystkie komunikaty o błędach, jakie może zobaczyć użytkownik.

PODSUMOWANIE

Co trzeba zapamiętać

  • Komentarz /// trafia do podpowiedzi edytora i do pliku dokumentacji XML.
  • <summary>, <param>, <returns> i <exception> wystarczą do opisania metody.
  • Komentarz w kodzie ma tłumaczyć dlaczego, a nie powtarzać, co robi instrukcja.
  • Dobra nazwa zastępuje komentarz; zły komentarz jest gorszy niż jego brak.
  • Projekt oddajemy z README dla programisty i instrukcją dla użytkownika — to dwa różne teksty.
  • Raport z testów wypełniaj na bieżąco: przypadek, dane, wynik oczekiwany, otrzymany, status.

Dokumentacja: Microsoft Learn — temat tej lekcji.