0Pricing
C# Academy · 课时

CLI 易用性

构建易用的命令行工具:清晰的帮助信息、短选项、退出代码、标准输出与标准错误、基础解析和简单的详细程度控制。

CLI 易用性 是 CoddyKit 上的免费 C# Academy 课时。 这是第 3 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 3 节课。

友好的 CLI 基础

目标:

  • 使用 -h/--help 显示帮助
  • 使用清晰的标志(-i、-o、--verbose)
  • 成功时返回 0,出错时返回非零值
  • 将结果发送到标准输出,将诊断信息发送到标准错误

用法与帮助

添加简短的用法部分,并接受短标志和长标志;输入缺失时显示该部分。

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

标志与退出代码

标志无效时返回非零值;保持消息简短且具体。将成功信息打印到标准输出。

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

标准输出与标准错误

将结果放在标准输出中(可通过管道传递),将诊断信息放在标准错误中。添加简单的 --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 表示输入/输出失败)

冒烟测试与文档

  • 尝试重定向:命令 > out.txt 和命令 2> err.txt
  • 测试错误路径:文件缺失、参数错误
  • 在移动设备上将用法文本控制在约 5 行以内
  • 记录示例:便于复制和粘贴

流与退出代码

快速检查:哪种做法可以提升 CLI 的易用性并改善 shell 管道操作?

回顾

回顾:-h/--help 帮助、清晰的标志、正确的退出代码以及分离标准输出/标准错误,可以让您的工具便于编写脚本且行为可预测。

常见问题解答

「CLI 易用性」课时是免费的吗?

是的 — 「CLI 易用性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 3 节课。

「CLI 易用性」这节课中我会学到什么?

构建易用的命令行工具:清晰的帮助信息、短选项、退出代码、标准输出与标准错误、基础解析和简单的详细程度控制。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 3 节。

「CLI 易用性」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. C# 脚本(dotnet script)、代码片段与 REPL
  2. 互操作基础(P/Invoke)速览
  3. CLI 易用性
← 返回 C# Academy