Wyjaśnianie zmiennych
Twój przypadek jest przykładem wprowadzenia wyjaśniającego refaktoryzację zmiennych . Krótko mówiąc, zmienna objaśniająca to zmienna, która nie jest absolutnie niezbędna, ale pozwala nadać czemuś wyraźną nazwę w celu zwiększenia czytelności.
Kod dobrej jakości komunikuje intencje czytelnikowi; a jako profesjonalny programista czytelność i łatwość konserwacji są Twoimi najważniejszymi celami.
Dlatego zalecam następującą zasadę: jeśli cel twojego parametru nie jest od razu oczywisty, możesz użyć zmiennej, aby nadać jej dobrą nazwę. Myślę, że jest to ogólnie dobra praktyka (chyba że jest nadużywana). Oto szybki, wymyślony przykład - zastanów się:
editButton.Enabled = (_grid.SelectedRow != null && ((Person)_grid.SelectedRow).Status == PersonStatus.Active);
w porównaniu z nieco dłuższym, ale prawdopodobnie wyraźniejszym:
bool personIsSelected = (_grid.SelectedRow != null);
bool selectedPersonIsEditable = (personIsSelected && ((Person)_grid.SelectedRow).Status == PersonStatus.Active)
editButton.Enabled = (personIsSelected && selectedPersonIsEditable);
Parametry boolowskie
Twój przykład pokazuje, dlaczego booleany w interfejsach API są często złym pomysłem - po stronie wywołującej nic nie robią, aby wyjaśnić, co się dzieje. Rozważać:
ParseFolder(true, false);
Musisz sprawdzić, co oznaczają te parametry; gdyby były wyliczeniami, byłoby o wiele bardziej jasne:
ParseFolder(ParseBehaviour.Recursive, CompatibilityOption.Strict);
Edytować:
Dodano nagłówki i zamieniłem kolejność dwóch głównych akapitów, ponieważ zbyt wiele osób skupiało się na części z parametrami boolowskimi (szczerze mówiąc, był to pierwszy akapit). Dodano także przykład do pierwszej części.