Ho un sacco di chiamate a un metodo che può o non può essere necessario a seconda se determinate funzionalità sono abilitate o meno. Come tale, ho spostato queste chiamate in if
blocchi controllando gli stati abilitati.
Gli argomenti del metodo in ciascuna di queste chiamate utilizzano alcuni nomi di variabili lunghe, quindi li ho suddivisi in righe diverse per la leggibilità / aderire al nostro standard di codifica della lunghezza della linea.
Questi grandi blocchi di chiamata metodo, combinati con i controlli delle condizioni per vedere se devono essere eseguiti (esacerbati dal mandato che includiamo tutti i blocchi if
in parentesi), sono piuttosto rumorosi.
Quindi ho qualcosa del genere:
if (FeatureSettings.FeatureXIsEnalbed)
{
this.TheMethodImCalling(
FeatureSettings.ReallyLongFeatureXSettingAName,
FeatureSettings.ReallyLongFeatureXSettingBName,
...);
}
if (FeatureSettings.FeatureYIsEnalbed)
{
this.TheMethodImCalling(
FeatureSettings.ReallyLongFeatureYSettingAName,
FeatureSettings.ReallyLongFeatureYSettingBName,
...);
}
if (FeatureSettings.FeatureZIsEnalbed)
{
this.TheMethodImCalling(
FeatureSettings.ReallyLongFeatureZSettingAName,
FeatureSettings.ReallyLongFeatureZSettingBName,
...);
}
Per ridurre il rumore e la ridondanza in questo codice, stavo pensando di prendere la struttura di blocchi if
e metterla dentro TheMethodImCalling
, quindi passare il valore ...IsEnabled
insieme al resto degli argomenti.
Questo sembra un po 'sciocco, visto che chiamerei il metodo e dire "Non fare niente". quando una funzione non è stata abilitata.
Ora, potrei probabilmente rendere il codice un po 'più leggibile assegnando le impostazioni lunghe a variabili temporanee più corte o persino a campi di una classe Arguments
che poi passerò al metodo, ma quelli non indirizzano il core domanda:
Devo ripetere la condizione di controllo del codice o inserirla nella funzione?
O c'è un'alternativa che dovrei considerare? (Entrambe le opzioni sembrano un po 'puzzolenti ...)