2017-06-30 1 views
0

J'ai essayé de m'améliorer en stylisant mon code et en m'assurant que c'est aussi lisible que possible.Lorsque chaque chemin d'une fonction a une instruction return, est-il erroné de ne pas utiliser une instruction else?

Est-ce que cela serait considéré comme une mauvaise pratique d'ignorer l'autre et d'avoir juste un retour?

Par exemple avec ceci:

if x == 1: 
    return True 
return False 

Au lieu de:

if x == 1: 
    return True 
else: 
    return False 
+1

Ceci est souvent une décision locale au sein de votre groupe de travail. Si vous voulez améliorer votre style, je vous recommande de lire les directives PEP-8. – Prune

+1

PEP-8 semble être agnostique à ce sujet. Il y a un exemple avec le premier style, un autre avec le second. – Barmar

+1

Ceci est très basé sur l'opinion, mais je dirais juste 'return x == 1' de sorte qu'il est évident et lisible que nous retournons si oui ou non' x == 1' ou non –

Répondre

0

Les deux styles sont valides, et le guide de style python (PEP 8) ne spécifie pas de préférence pour. Quel que soit votre choix, soyez cohérent avec celui-ci. Cela donnera un code plus facile à lire.

de PEP 8:

[...] code est lu beaucoup plus souvent que ce qui est écrit. [...] Comme le dit PEP 20, "La lisibilité compte".

Un guide de style concerne la cohérence. La cohérence avec ce guide de style est importante. La cohérence au sein d'un projet est plus importante. La cohérence au sein d'un module ou d'une fonction est la plus importante.

Sous Programming recommendations:

Oui:

def foo(x): 
    if x >= 0: 
     return math.sqrt(x) 
    else: 
     return None 

def bar(x): 
    if x < 0: 
     return None 
    return math.sqrt(x) 
0

Je retourne toujours directement quand il ne impact.

Je ne trouve pas référence à ce sujet, mais voici ma vision

Parce que quelque temps vous pourriez avoir à faire des choses comme

for spam in bacon: 
    if spam == egg: 
     return spam 

Mais si vous voulez éviter de revenir dans la déclaration if vous devra faire:

return_value = None 

from spam in bacon: 
    if spam == egg: 
     return_value = spam 
     break 

return return_value 

qui résultent du même résultat à l'exécution & mais seulement ajouter 3 non pertinent li nes donc je pense finalement que lorsque cela arrive, j'utilise toujours la même règle: retourner directement. La chose est de ne pas aller trop loin avec for/if/return, mais ce n'est pas vraiment la question ici.