Ergonomia CLI
Proszę budować przyjazne narzędzia wiersza poleceń: przejrzystą pomoc, krótkie flagi, kody wyjścia, stdout i stderr, podstawowe analizowanie argumentów oraz prostą kontrolę szczegółowości.
Ergonomia CLI to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.
Podstawy przyjaznego interfejsu CLI
Cele:
- Wyświetlać pomoc za pomocą -h/--help
- Używać jasnych flag (-i, -o, --verbose)
- Zwracać 0 w razie powodzenia i wartość niezerową w razie błędu
- Wysyłać wyniki do stdout, a informacje diagnostyczne do stderr
Sposób użycia i pomoc
Dodaj krótką sekcję sposobu użycia i akceptuj zarówno krótkie, jak i długie flagi; wyświetlaj ją, gdy brakuje danych wejściowych.
using System;
// A tiny CLI that prints help if no args or -h/--help is passed.
public class Program
{
static void PrintUsage()
{
Console.WriteLine("usage: tool -i <input> [-o <output>] [--verbose]");
Console.WriteLine("options:");
Console.WriteLine(" -i, --input input file path (required)");
Console.WriteLine(" -o, --output output file path (optional)");
Console.WriteLine(" -h, --help show help");
Console.WriteLine(" --verbose print extra diagnostics to stderr");
}
public static void Main(string[] args)
{
if (args.Length == 0 || args[0] == "-h" || args[0] == "--help")
{
PrintUsage();
Environment.ExitCode = 0;
return;
}
Console.WriteLine("OK: arguments received"); // placeholder success
}
}
Flagi i kody wyjścia
Zwracaj wartość niezerową w przypadku nieprawidłowych flag; twórz krótkie i konkretne komunikaty. Komunikat o powodzeniu wypisuj do stdout.
using System;
// Minimal manual parsing for beginners (no external libs).
public class Program
{
static void Error(string msg)
{
Console.Error.WriteLine("error: " + msg);
Environment.ExitCode = 1; // non-zero means failure
}
public static void Main(string[] args)
{
string input = null;
string output = null;
for (int i = 0; i < args.Length; i++)
{
string a = args[i];
if (a == "-i" || a == "--input")
{
if (i + 1 >= args.Length) { Error("missing value for " + a); return; }
input = args[++i];
}
else if (a == "-o" || a == "--output")
{
if (i + 1 >= args.Length) { Error("missing value for " + a); return; }
output = args[++i];
}
else if (a == "-h" || a == "--help")
{
Console.WriteLine("usage: tool -i <input> [-o <output>]");
return;
}
else
{
Error("unknown option: " + a);
return;
}
}
if (input == null) { Error("input is required (-i)"); return; }
// Success path: write result to stdout
Console.WriteLine("Processed " + input + (output == null ? "" : (" -> " + output)));
Environment.ExitCode = 0;
}
}
Stdout a stderr
Umieszczaj wyniki na stdout (umożliwiając przekierowanie potokiem), a informacje diagnostyczne na stderr. Dodaj prostą flagę --verbose.
using System;
// Show separation of streams: stdout (results) vs stderr (diagnostics).
public class Program
{
public static void Main(string[] args)
{
bool verbose = false;
for (int i = 0; i < args.Length; i++) if (args[i] == "--verbose") verbose = true;
if (verbose) Console.Error.WriteLine("info: starting work");
// pretend to compute a number
int result = 42;
// Result goes to stdout so it can be piped: tool ... > out.txt
Console.WriteLine(result);
if (verbose) Console.Error.WriteLine("info: finished work");
Environment.ExitCode = 0;
}
}
Konwencje i dopracowanie
- Akceptuj zarówno krótkie, jak i długie flagi (-h/--help)
- Używaj jasnych komunikatów o błędach (co jest nie tak i jak to naprawić)
- Ogranicz domyślne dane wyjściowe do minimum; dodaj --verbose, aby wyświetlać szczegóły
- Używaj spójnych kodów wyjścia (0 — powodzenie, 1 — nieprawidłowe argumenty, 2 — błąd wejścia/wyjścia)
Testy dymne i dokumentacja
- Wypróbuj przekierowanie: command > out.txt i command 2> err.txt
- Testuj ścieżki błędów: brakujący plik, nieprawidłowe argumenty
- Ogranicz tekst sposobu użycia do około 5 wierszy na urządzeniach mobilnych
- Dokumentuj przykłady łatwe do kopiowania i wklejania
Strumienie i kody wyjścia
Podsumowanie
Podsumowanie: Pomoc dostępna za pomocą -h/--help, jasne flagi, właściwe kody wyjścia oraz rozdzielenie stdout/stderr sprawiają, że narzędzia dobrze współpracują ze skryptami i działają w przewidywalny sposób.
Często zadawane pytania
Czy lekcja „Ergonomia CLI” jest bezpłatna?
Tak — pełny tekst „Ergonomia CLI” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „Ergonomia CLI”?
Proszę budować przyjazne narzędzia wiersza poleceń: przejrzystą pomoc, krótkie flagi, kody wyjścia, stdout i stderr, podstawowe analizowanie argumentów oraz prostą kontrolę szczegółowości. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C# Academy?
Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 3.
Ile czasu zajmuje lekcja „Ergonomia CLI”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?
Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.