Quale sarebbe il minimo codice di boilerplate per un'applicazione console entry-point C# che renderebbe un ben educati cittadino?Minimal, buon cittadino, C# applicazione console boilerplate
Quando qualcuno va a creare un progetto Applicazione console utilizzando Visual Studio (fino al 2008, al momento della scrittura), si sono presentati con un testo standard Program.cs
che assomiglia a questo:
class Program
{
static void Main(string[] args)
{
}
}
Ci sono, tuttavia, alcune cose che tutti devono fare per rendere un'applicazione console un minimamente un buon cittadino. Ad esempio, se si verifica un'eccezione, scrivere un messaggio pulito con errore standard (Console.Error) e non con output standard (Console.Out). Allo stesso modo, impostare il codice di errore su un valore diverso da zero in caso di errore, in modo che i processi di chiamata possano rilevare i guasti.
quello che sarebbe il minimo codice di boilerplate per un'applicazione console entry-point C# che renderebbe un ben educati cittadino? Cosa aggiungere o modificare al seguente?
using System;
using System.Diagnostics;
using System.Linq;
static class Program
{
static void Run(string[] args)
{
// TODO Replace line-echoing sample with actual application code
string line;
while ((line = Console.ReadLine()) != null)
Console.WriteLine(line);
}
static int Main(string[] args)
{
// TODO Use a more robust arguments parser
if (args.Any(arg => arg.Equals("/v") || arg.Equals("-v"))) // verbose?
Trace.Listeners.Add(new ConsoleTraceListener(true));
try
{
Run(args);
return Environment.ExitCode;
}
catch (Exception e)
{
Console.Error.WriteLine(e.Message);
Trace.TraceError(e.ToString());
return Environment.ExitCode != 0
? Environment.ExitCode : 100;
}
}
}
Ciò boilerplate raggiunge:
- Se viene generata un'eccezione:
- un messaggio pulito viene stampato sullo standard error
- tutti i dettagli sono tracciate
- la il codice di uscita è impostato su un valore arbitrario diverso da zero (100), a meno che non sia già impostato
- registrazione può essere attivata dinamicamente tramite un interruttore dettagliato
- tracciamento viene inviato errore standard per non interferire con il produzione reale
- In caso di successo, il codice di uscita riflette l'ultimo valore Environment.ExitCode , che di solito è zero, ma può essere modificata codice valle
Program
classe è statica
non-obiettivi di questa domanda:
- Identificare gli argomenti della riga di comando il codice di gestione o libreria
- identificare un logging esterno o tracciare biblioteca
Una la domanda è? :) Seriamente, avresti dovuto lavorarci un po 'in una domanda. E forse una risposta. –
La domanda è lì in grassetto. –
In grassetto, sì. E 20 righe in basso. –