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 行以内
- 记录示例:便于复制和粘贴
流与退出代码
回顾
回顾:-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 反馈 — 无需本地设置。