J'ai rencontré le conditionnel suivant dans un programme que j'ai repris d'un autre développeur:
if (obj.Performance <= LOW_PERFORMANCE)
{
obj.NeedsChange = true;
}
else
{
obj.NeedsChange = false;
}
Je crois que ce code est redondant et laid, donc je l'ai changé pour ce que je pensais être une simple affectation booléenne basée sur une comparaison:
obj.NeedsChange = obj.Performance <= LOW_PERFORMANCE;
En voyant cela, quelqu'un examinant mon code a déclaré que bien que mon changement soit fonctionnellement correct, cela pourrait dérouter quelqu'un d'autre qui le regarde. Il pense que l'utilisation d'un opérateur ternaire rend cette affectation plus claire, alors que je n'aime pas l'ajout de code plus redondant:
obj.NeedsChange = (obj.Performance <= LOW_PERFORMANCE) ? true : false;
Son raisonnement est que faire quelque chose de la manière la plus concise ne vaut pas la peine, si cela oblige un autre développeur à s'arrêter et à comprendre exactement ce que vous avez fait.
La vraie question ici est laquelle de ces trois méthodes d'attribution d'une valeur au booléen obj.NeedsChange
est la plus claire et la plus maintenable?