2010-11-01 22 views
0

Avec une fonction comme ceci:Que nommer une variable lorsque le nom que vous voulez est déjà pris

def example(things): 
    x1 = 1 
    x2 = 1 
    for thing in things: 
     (x2, y2) = some_function(thing) 
     x1 += x2 
     y1 += y2 
    return (x1, y1) 

Le problème qui se pose est que x1 et x2 représentent la même chose, et ainsi faire y1 et y2 . En supposant que vous ne savez rien sur x1 et y1, y a-t-il une règle de base pour ce que nommer x2 et y2 dans ce cas? Dans un cas plus simple (une variable), je ferais x += some_function(in), mais Python ne me laissera pas faire (x, y) += recursive(in), donc je dois les avoir. Je soupçonne que le nom n'est pas particulièrement important, mais cela me dérange en utilisant de mauvais noms de variables.

Dans le cas d'aujourd'hui, les variables étaient ways et calls et je viens en annexe r à l'avant de chaque:

def make_change(amount, coins): 
    # -- stuff -- # 
    if len(coins) > 1: 
     (rways, rcalls) = make_change(amount, coins[1:]) 
     ways += rways 
     calls += rcalls 
    return (ways, calls) 
+0

Ceci est spécifique à la langue (si vous voulez dire python, étiqueter la question en tant que python car c'est l'un de ces langages au format pédantique ;-). Certaines langues ont ... plus de symboles autorisés dans les noms ainsi que dans différentes conventions :-) Personnellement, j'essaie habituellement de donner un nouveau nom distinctif facile à désamorcer. –

+0

Ce n'est pas vraiment spécifique à la langue. J'aurais exactement le même problème en C++, C, PHP, Java .. Ce que je cherche n'est pas une solution Python, mais une solution universelle. –

+0

La dénomination variable est une pratique très subjective.Il existe plusieurs façons de le faire, assurez-vous d'être clair et cohérent. – gnovice

Répondre

3

Lorsque vous avez deux variables qui ont un contenu similaire, donnez-leur des noms qui expriment ce qui est similaire et ce qui est différent. Je n'ai aucune idée de ce que vous parlez de «façons» et d '«appels», mais il semble que ce que vous faites, c'est que vous ayez un total et un, quel, montant de la transaction? Dans ce cas, je les appellerais "ways_total" et "ways_tx" ou quelque chose comme ça. Ce que je vous encouragerais certainement à ne pas faire est simplement virer un "1" et un "2" sur la fin, ou délibérément mal orthographier un. L'autre jour, je regardais un programme qui calcule les coûts de fret, et j'ai trouvé trois variables nommées «fret», «fret» et «fret» (le «t» final a doublé). Cela ne m'a donné aucune idée de la différence entre les trois. J'ai dû creuser à travers le programme pour le comprendre.

J'ai vu beaucoup de programmes qui "résolvent" le même problème en les appelant fret1 et fret2.

Si vous avez besoin de deux variables, il doit y avoir une différence entre elles, et lorsque vous écrivez le code, vous devez savoir quelle est cette différence. Donner au lecteur une idée.

2

Dans ce cas particulier, je dirais le nom de votre ways et calls comme total_ways et total_calls et que avoir les locaux avec 'r' juste sans 'r'. Je pense qu'un tel nom serait un peu plus descriptif pour quelqu'un d'autre lisant ce code.

1

Vous pouvez créer un objet de résultat personnalisé contenant les informations que vous souhaitez conserver et définir une méthode __add__() afin de pouvoir les ajouter. Cela ressemble à beaucoup de travail à faire, mais il exprime l'intention plus clairement.