Parfois, les non-op clauses peuvent rendre votre code plus lisible.
Cela peut être une question d'opinion, mais voici un exemple. Supposons que vous avez créé une fonction qui fonctionne en prenant deux chemins unix. Il calcule le "changement de voie" nécessaire pour cd à partir d'un chemin d'accès à l'autre. Vous placez une restriction sur votre fonction que les chemins d'accès doivent commencer par un '/' OU les deux, doivent pas.
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
true # continue with function
else
return 1 # Skip function.
fi
Certains développeurs veulent supprimer la non-op mais cela signifierait la négation de la condition:
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" != / || "$fromC" == / ]] && [[ "$toC" == / || "$fromC" != / ]]
then
return 1 # Skip function.
fi
Maintenant -à mon avis - ce n'est pas si évident à partir de la si la clause des conditions dans lesquelles vous souhaitez ne pas faire la fonction. Pour éliminer la non-op et le faire clairement, vous souhaitez déplacer le si la clause de la fonction:
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
cdPath=$(chgPath pathA pathB) # (we moved the conditional outside)
Qui semble mieux, mais de nombreuses fois, nous ne pouvons pas faire cela; nous voulons que la vérification se fait à l'intérieur de la fonction.
Donc, combien de fois est-ce possible? Pas très souvent. Peut-être une fois ou deux fois par an. Il arrive assez souvent, que vous devriez être au courant de cela. Je n'ai pas hésiter à l'utiliser quand je pense qu'il améliore la lisibilité de mon code (quelle que soit la langue).