Mi sono un po 'confuso. Ho il codice proveniente da Main, tramite myMethod e giù su OtherMethod. Uno dei parametri può essere un int o una stringa, che influenza OtherMethod ma nessuno dei metodi intermedi.
public static void Main()
{
myMethod(number: 10);
myMethod(letters: "ten");
}
public static void myMethod(int number = 0, string letters = null)
{
//long entirely shared code with calls to:
OtherMethod(number,letters);
}
public static void OtherMethod(int number = 1, string letters = null)
{
//Lots of shared code, embedded multiple times within this code is essentially:
if (letters != null)
{
Console.WriteLine("letters!");
}
else
{
Console.WriteLine("numbers!");
}
}
OtherMethod si preoccupa di quando sto passando a int
o string
, ma nessuno dei metodi intervistati si preoccupa. Troverò anche la divisione di OtherMethod senza riutilizzo del codice non necessario molto difficile.
La soluzione che ho fornito funziona, ma probabilmente è un anti-pattern. Perché, ad esempio, una chiamata a myMethod(10,"ten")
rigirerebbe silenziosamente 10
nel cestino.
La modifica in private mymethod(int number = 0, string = null)
chiamata da public (int number)
e public (string letter)
per ogni livello sarebbe una pessima idea?
Ho pensato di passare invece una classe con int e string e le istruzioni da usare direttamente dall'alto in basso. Sospetto che questa sia la soluzione. Ma sembra OTT quanto OO.
Il mio vero caso d'uso è che sto generando dati casualmente nella parte inferiore di questa catena e posso fornire un seed (int) o un cheat e fornire i dati da generare (string). Mi viene in mente che quello che sto facendo potrebbe essere una scusa per l'iniezione della dipendenza procedurale,