In einem Programm, das ich von einem anderen Entwickler übernommen habe, bin ich auf folgende Bedingung gestoßen:
if (obj.Performance <= LOW_PERFORMANCE)
{
obj.NeedsChange = true;
}
else
{
obj.NeedsChange = false;
}
Ich glaube, dieser Code ist redundant und hässlich, deshalb habe ich ihn in eine einfache boolesche Zuordnung geändert, die auf einem Vergleich basiert:
obj.NeedsChange = obj.Performance <= LOW_PERFORMANCE;
Als jemand dies sah, bemerkte er, dass meine Änderung zwar funktional korrekt ist, aber möglicherweise jemanden verwirrt, der sie betrachtet. Er glaubt, dass die Verwendung eines ternären Operators diese Zuordnung klarer macht, während ich das Hinzufügen von redundanterem Code nicht mag:
obj.NeedsChange = (obj.Performance <= LOW_PERFORMANCE) ? true : false;
Seine Argumentation ist, dass es sich nicht lohnt, etwas auf die prägnanteste Weise zu tun, wenn ein anderer Entwickler anhalten und genau herausfinden muss, was Sie getan haben.
Die eigentliche Frage hier ist, welche dieser drei Methoden zum Zuweisen eines Werts zum Booleschen Wert am klarsten obj.NeedsChange
und am wartbarsten ist.