0Pricing
C# Academy · Lekcja

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

Szybkie sprawdzenie: która praktyka poprawia użyteczność CLI i przekazywanie danych potokiem w powłoce?

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.

Wszystkie lekcje w tym kursie

  1. Skrypty C# (dotnet script), fragmenty i REPL
  2. Podstawy interop (P/Invoke) w skrócie
  3. Ergonomia CLI
← Powrót do C# Academy