Ecco due metodi che fanno la stessa cosa. Uno sta ripetendo la chiamata al metodo Print
dove l'altro non ha ma ha una variabile aggiuntiva.
class Program
{
static void Main(string[] args)
{
Snippet1(args);
Snippet2(args);
}
private static void Snippet1(string[] args)
{
string message;
if (args.Length == 0)
{
message = "No argument";
}
else
{
message = string.Format("Argument Count = {0}", args.Length);
}
Print(message);
}
private static void Snippet2(string[] args)
{
if (args.Length == 0)
{
Print("No argument");
}
else
{
Print(string.Format("Argument Count = {0}", args.Length));
}
}
private static void Print(string s)
{
Console.WriteLine(s);
}
}
Personalmente non mi piace avere due volte la stessa invocazione e preferisco usare una variabile che faccia l'obiettivo dell'istruzione if per definire il messaggio invece di definire + invocare. Credo anche che sia più chiaro avere un'invocazione unica se è necessario modificarla in seguito.
Qual è la migliore pratica / modello da applicare?