Ergonomia da CLI
Crie ferramentas de linha de comando fáceis de usar: ajuda clara, opções curtas, códigos de saída, stdout versus stderr, análise básica e verbosidade simples.
Ergonomia da CLI é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.
Noções básicas de uma CLI amigável
Objetivos:
- Exibir a ajuda com -h/--help
- Usar opções claras (-i, -o, --verbose)
- Retornar 0 em caso de sucesso e um valor diferente de zero em caso de erro
- Enviar os resultados para stdout e os diagnósticos para stderr
Uso e ajuda
Adicione uma seção curta de uso e aceite opções curtas e longas; mostre-a quando a entrada estiver ausente.
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
}
}
Opções e códigos de saída
Retorne um valor diferente de zero para opções inválidas; mantenha as mensagens curtas e específicas. Imprima o sucesso em 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 e stderr
Coloque os resultados em stdout (para encaminhamento por pipe) e os diagnósticos em stderr. Adicione uma opção simples --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;
}
}
Convenções e acabamento
- Aceite opções curtas e longas (-h/--help)
- Use mensagens de erro claras (o que está errado + como corrigir)
- Mantenha a saída padrão mínima; adicione --verbose para obter detalhes
- Use códigos de saída consistentes (0 sucesso, 1 argumentos inválidos, 2 falha de E/S)
Testes rápidos e documentação
- Experimente o redirecionamento: comando > out.txt e comando 2> err.txt
- Teste os caminhos de erro: arquivo ausente, argumentos inválidos
- Mantenha o texto de uso com menos de aproximadamente 5 linhas no celular
- Documente exemplos fáceis de copiar e colar
Fluxos e códigos de saída
Recapitulação
Recapitulação: ajuda em -h/--help, opções claras, códigos de saída adequados e a separação entre stdout/stderr tornam suas ferramentas adequadas para scripts e previsíveis.
Perguntas Frequentes
A aula “Ergonomia da CLI” é grátis?
Sim — o texto completo de “Ergonomia da CLI” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.
O que vou aprender em “Ergonomia da CLI”?
Crie ferramentas de linha de comando fáceis de usar: ajuda clara, opções curtas, códigos de saída, stdout versus stderr, análise básica e verbosidade simples. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.
Quanto tempo leva a aula “Ergonomia da CLI”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Scripting em C# (dotnet script), trechos e REPL
- Fundamentos de interoperabilidade (P/Invoke) de relance
- Ergonomia da CLI