W programie przejętym od innego programisty natknąłem się na następujące warunki:
if (obj.Performance <= LOW_PERFORMANCE)
{
obj.NeedsChange = true;
}
else
{
obj.NeedsChange = false;
}
Uważam, że ten kod jest zbędny i brzydki, więc zmieniłem go na coś, co moim zdaniem było prostym zadaniem logicznym opartym na porównaniu:
obj.NeedsChange = obj.Performance <= LOW_PERFORMANCE;
Widząc to, ktoś sprawdzający mój kod skomentował, że chociaż moja zmiana jest funkcjonalnie poprawna, może to mylić kogoś innego, kto na nią patrzy. Uważa, że użycie operatora trójskładnikowego czyni to zadanie bardziej zrozumiałym, podczas gdy nie podoba mi się dodanie bardziej redundantnego kodu:
obj.NeedsChange = (obj.Performance <= LOW_PERFORMANCE) ? true : false;
Jego rozumowanie jest takie, że robienie czegoś w najbardziej zwięzły sposób nie jest tego warte, jeśli powoduje to, że inny programista musi się zatrzymać i zastanowić się, co dokładnie zrobiłeś.
Prawdziwe pytanie brzmi: która z tych trzech metod przypisywania wartości do wartości logicznej obj.NeedsChange
jest najbardziej przejrzysta i najłatwiejsza do utrzymania?