Spiegazione delle variabili
Il tuo caso è un esempio del introdurre la spiegazione del refactoring della variabile . In breve, una variabile esplicativa è una variabile che non è strettamente necessaria, ma consente di dare un nome chiaro a qualcosa, con l'obiettivo di aumentare la leggibilità.
Il codice di buona qualità comunica intento al lettore; e in quanto sviluppatore professionale, la leggibilità e la manutenibilità sono i tuoi obiettivi numero uno.
Pertanto, la regola generale che raccomanderei è questa: se lo scopo del tuo parametro non è immediatamente ovvio, sentiti libero di usare una variabile per dargli un buon nome. Penso che questo sia un buone pratiche in generale (a meno che non vengano abusate). Ecco un esempio rapido e forzato: prendi in considerazione:
editButton.Enabled = (_grid.SelectedRow != null && ((Person)_grid.SelectedRow).Status == PersonStatus.Active);
contro il leggermente più lungo, ma probabilmente più chiaro:
bool personIsSelected = (_grid.SelectedRow != null);
bool selectedPersonIsEditable = (personIsSelected && ((Person)_grid.SelectedRow).Status == PersonStatus.Active)
editButton.Enabled = (personIsSelected && selectedPersonIsEditable);
Parametri booleani
In realtà il tuo esempio evidenzia perché i i booleani nelle API sono spesso una cattiva idea - dal lato delle chiamate, non fanno nulla per spiegare cosa sta succedendo. Prendere in considerazione:
ParseFolder(true, false);
Dovresti cercare cosa significano questi parametri; se fossero enumerati, sarebbe molto più chiaro:
ParseFolder(ParseBehaviour.Recursive, CompatibilityOption.Strict);
Modifica
Aggiunti i titoli e scambiato l'ordine dei due paragrafi principali, perché troppe persone si stavano concentrando sulla parte dei parametri booleani (per essere onesti, era il primo paragrafo in origine). Inoltre, ho aggiunto un esempio alla prima parte.