0Pricing
C# Academy · Урок

Удобство интерфейса CLI

Создавайте удобные инструменты командной строки: понятную справку, короткие флаги, коды завершения, stdout и stderr, базовый разбор и простую настройку подробности вывода.

«Удобство интерфейса CLI» — бесплатный урок C# Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.

Основы удобного CLI

Цели:

  • Показывать справку с помощью -h/--help
  • Использовать понятные флаги (-i, -o, --verbose)
  • Возвращать 0 при успехе и ненулевое значение при ошибке
  • Отправлять результаты в stdout, а диагностические сообщения — в stderr

Использование и справка

Добавьте короткий раздел об использовании и принимайте короткие и длинные флаги; показывайте этот раздел, если входные данные отсутствуют.

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
  }
}

Флаги и коды завершения

Возвращайте ненулевое значение при недопустимых флагах; пишите короткие и конкретные сообщения. Выводите сообщение об успехе в 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 и stderr

Помещайте результаты в stdout (чтобы их можно было передавать по конвейеру), а диагностические сообщения — в stderr. Добавьте простой флаг --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;
  }
}

Соглашения и доработка

  • Принимайте короткие и длинные флаги (-h/--help)
  • Используйте понятные сообщения об ошибках (что произошло и как это исправить)
  • Делайте вывод по умолчанию минимальным; добавляйте подробности с помощью --verbose
  • Используйте единообразные коды завершения (0 — успех, 1 — недопустимые аргументы, 2 — ошибка ввода-вывода)

Быстрые тесты и документация

  • Проверьте перенаправление: command > out.txt и command 2> err.txt
  • Проверьте пути ошибок: отсутствующий файл, неправильные аргументы
  • Укладывайте текст справки примерно в 5 строк на мобильном устройстве
  • Документируйте примеры: их должно быть удобно копировать и вставлять

Потоки и коды завершения

Быстрая проверка: какой приём повышает удобство CLI и передачу данных по конвейеру оболочки?

Повторение

Повторение: справка по -h/--help, понятные флаги, правильные коды завершения и разделение stdout/stderr делают ваши инструменты удобными для скриптов и предсказуемыми.

Часто задаваемые вопросы

Урок «Удобство интерфейса CLI» бесплатный?

Да — полный текст урока «Удобство интерфейса CLI» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.

Чему я научусь в уроке «Удобство интерфейса CLI»?

Создавайте удобные инструменты командной строки: понятную справку, короткие флаги, коды завершения, stdout и stderr, базовый разбор и простую настройку подробности вывода. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Удобство интерфейса CLI»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Скрипты C# (dotnet script), фрагменты и REPL
  2. Основы взаимодействия с неуправляемым кодом (P/Invoke)
  3. Удобство интерфейса CLI
← Назад к C# Academy