Question

Je viens de commencer à utiliser Python et je pensais que je devrais utiliser la notation. J'ai lu PEP 8 Guide sur la notation pour Python et je suis d'accord avec la plupart des choses là-bas, sauf les noms de fonction (que je préfère dans le style texteEncasseMelangée).

En C ++ j'utilise une version modifiée de la notation hongroise où je ne contient pas d'informations sur le type, mais seulement sur la portée d'une variable (par exemple lVariable pour une variable locale et mVariable pour une variable membre d'une classe, g for global, s pour statique, dans de l'entrée de fonction et pour la sortie d'une fonction.)

Je ne sais pas si ce style de notation a un nom, mais je me demandais si c'est une bonne idée de ne pas utiliser un tel style de notation en Python. Je ne suis pas très familier avec Python si vous les gars / filles pourraient voir les problèmes que je ne peux pas encore imaginer.

Je suis aussi curieux de voir ce que vous pensez en général :) Certaines personnes pourraient dire rend le code moins lisible, mais je suis habitué à lui et code écrit sans ces étiquettes est le code qui est moins lisible pour moi.

Était-ce utile?

La solution

  

( Presque tous les programmeurs Python dira il rend le code moins lisible, mais je suis habitué à lui et code écrit sans ces étiquettes est le code qui est moins lisible pour moi)

TPTA.

Sérieusement, il vous aidera, mais confondre et embêter les autres programmeurs Python qui tentent de lire votre code.

Il est pas aussi nécessaire en raison de la façon dont fonctionne Python lui-même. Par exemple vous jamais besoin de votre forme "mVariable" parce qu'il est évident en Python:

class Example(object):
    def__init__(self):
        self.my_member_var = "Hello"

    def sample(self):
        print self.my_member_var

e = Example()
e.sample()
print e.my_member_var

Peu importe la façon dont vous accédez à une variable membre (en utilisant self.foo ou myinstance.foo), il est toujours clair que c'est un membre.

Les autres cas pourraient ne pas être si douloureusement évident, mais si votre code n'est pas assez simple qu'un lecteur peut garder à l'esprit « de la variable« noms est un paramètre » pendant la lecture d'une fonction que vous faites probablement quelque chose de mal .

Autres conseils

Utilisation PEP-8. Il est presque universel dans le monde Python.

Je viole pep8 dans mon code. J'utilise:

  • lowercaseCamelCase pour les méthodes et fonctions
  • _prefixedWithUnderscoreLowercaseCamelCase pour les méthodes "privées"
  • underscore_spaced pour les variables (any)
  • _prefixed_with_underscore_variables pour les variables auto "privées" (attributs)
  • CapitalizedCamelCase pour les classes et modules (bien que je me déplace à lowercasedmodules)

Je ne ai jamais aimé la notation hongroise. Un nom de variable doit être facile et concis, fournir suffisamment d'informations pour être clair où (dans lequel la portée) il est utilisé et quel est son but, facile à lire, préoccupé par le sens de ce qu'il appelle, et non son charabia technique ( ex. le type).

La raison derrière mes violations sont dues à des considérations d'ordre pratique et expérience.

  • en C ++ et Java, il est tradition d'avoir CapitalizedCamel pour les classes et lowercaseCamel pour les fonctions membres.
  • Je travaillais sur une base de code où le préfixe de soulignement a été utilisé pour indiquer privée, mais pas tant que ça privé. Nous ne voulions pas jouer avec le nom de python mangling (un double underscore). Cela nous a donné la chance de violer un peu les formalités et peek l'état de la classe interne lors de tests unitaires.

Il existe un script pep-8 pratique le respect que vous pouvez exécuter contre votre code:

http://github.com/cburroughs/pep8.py/tree/master

Il va dépendre du projet et le public cible.

Si vous construisez une application open source / plug-in / bibliothèque, respecter les directives PEP.

Si ce projet est pour votre entreprise, le bâton avec les conventions de l'entreprise, ou quelque chose de similaire.

Si ceci est votre propre projet personnel, puis utiliser ce que jamais convention est fluide et facile pour vous d'utiliser.

J'espère que cela a du sens.

Vous devez simplement être compatible avec vos conventions de nommage dans votre propre code. Toutefois, si vous avez l'intention de libérer votre code à d'autres développeurs, vous devez tenir à PEP-8.

Par exemple, les 4 espaces contre 1 onglet est un gros problème lorsque vous avez un projet de collaboration. Les gens qui soumettent le code à un référentiel source avec des onglets exige des développeurs d'être constamment en faisant valoir sur les questions de blancs (qui en Python est une affaire BIG).

Python et toutes les langues ont des conventions préférées. Vous devez les apprendre.

Java aime mixedCaseStuff.

C aime szHungarianNotation.

Python préfère stuff_with_underscores.

Vous pouvez écrire du code Java with_python_type_function_names.
Vous pouvez écrire du code Python avec javaStyleMixedCaseFunctionNamesThatAreSupposedToBeReallyExplict

tant que votre cohérente: p

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top