J'ai un module dont le but est de définir une classe appelée "nib". (et quelques classes connexes aussi.) Comment dois-je appeler le module lui-même? "plume"? "nibmodule"? Rien d'autre?
python
naming-conventions
Ram Rachum
la source
la source
Client
, et naturellement j'en ferais souvent des instances que je veux appelerclient
. Mais selon votre convention, le nom du module seraitclient
, et donc je devrais toujours nommer mes instances quelque chose de non naturel commeclient_instance
. Que pensez-vous de ce problème?Client
, alors il entrerait en conflit avec le nom de la classeClient
. Puisqu'il n'y a que 3 variantes de dénomination possibles (client
,Client
ouCLIENT
), il y aura toujours un conflit entre deux des instances, classes, modules ou constantes. Je pense qu'il y a moins de fois que vous nommez votre module de la même manière qu'une instance ou une constante que la classe, et c'est donc la meilleure convention de dénomination des autres possibilités. Cela rendra également l'importation à partir de modules plus lisible puisque vous importez généralement des classes et des constantes plutôt que des variables.Je l'appellerais nib.py. Et je nommerais aussi la classe Nib.
Dans un projet python plus vaste sur lequel je travaille, nous avons de nombreux modules définissant essentiellement une classe importante. Les classes sont nommées en commençant par une majuscule. Les modules sont nommés comme la classe en minuscules. Cela conduit à des importations comme les suivantes:
C'est un peu comme émuler la méthode Java. Une classe par fichier. Mais avec la flexibilité supplémentaire, que vous pouvez toujours ajouter une autre classe à un seul fichier si cela a du sens.
la source
Je sais que ma solution n'est pas très populaire du point de vue pythonique, mais je préfère utiliser l'approche Java d'un module-> une classe, avec le module nommé comme classe. Je comprends la raison du style python, mais je n'aime pas trop avoir un très gros fichier contenant beaucoup de classes. J'ai du mal à parcourir, malgré le pliage.
Une autre raison est le contrôle de version: avoir un fichier volumineux signifie que vos commits ont tendance à se concentrer sur ce fichier. Cela peut potentiellement conduire à une plus grande quantité de conflits à résoudre. Vous perdez également les informations de journal supplémentaires selon lesquelles votre validation modifie des fichiers spécifiques (impliquant donc des classes spécifiques). À la place, vous voyez une modification du fichier du module, avec uniquement le commentaire de validation pour comprendre quelle modification a été effectuée.
En résumé, si vous préférez la philosophie python, optez pour les suggestions des autres articles. Si vous préférez plutôt la philosophie java, créez un Nib.py contenant la classe Nib.
la source
spyder
ou un éditeur similaire pour voir un résumé de vos classes pour faciliter la navigation, et deux volets avec le même fichier s'ouvrent sur les deux. Veuillez également lire PEP8. Python est pour écrire Python et Java pour Java, mais Python n'est pas pour écrire Java.la plume est bien. En cas de doute, reportez-vous au guide de style Python.
À partir de PEP 8 :
la source
À partir de PEP-8: noms des packages et des modules :
la source
Le module foo en python serait l'équivalent d'un fichier de classe Foo en Java
ou
module foobar en python serait l'équivalent d'un fichier de classe FooBar en Java
la source