Eu tenho um módulo cujo objetivo é definir uma classe chamada "nib". (e algumas classes relacionadas também.) Como devo chamar o próprio módulo? "bico"? "nibmodule"? Algo mais?
python
naming-conventions
Ram Rachum
fonte
fonte
Client
e, compreensivelmente, muitas vezes eu criaria ocorrências dela que gostaria de chamarclient
. Mas, de acordo com sua convenção, o nome do módulo seriaclient
e, portanto, sempre teria que nomear minhas instâncias com algo não natural comoclient_instance
. O que você acha desse problema?Client
, então ela entraria em conflito com o nome da classeClient
. Uma vez que existem apenas 3 possível nomeação variantes (client
,Client
ouCLIENT
) sempre haverá um confronto entre duas das instâncias, classes, módulos ou constantes. Acredito que haja menos vezes que você nomeie seu módulo da mesma forma que uma instância ou constante do que a classe e, portanto, é a melhor convenção de nomenclatura das outras possibilidades. Também tornará a importação de módulos mais legível, já que geralmente você importa classes e constantes em vez de variáveis.Eu o chamaria de nib.py. E eu também nomearia a classe Nib.
Em um projeto python maior no qual estou trabalhando, temos muitos módulos que definem basicamente uma classe importante. As classes são nomeadas começando com uma letra maiúscula. Os módulos são nomeados como a classe em letras minúsculas. Isso leva a importações como as seguintes:
É um pouco como emular o método Java. Uma aula por arquivo. Mas com a flexibilidade adicional, você pode sempre adicionar outra classe a um único arquivo, se fizer sentido.
fonte
Sei que minha solução não é muito popular do ponto de vista pythônico, mas prefiro usar a abordagem Java de um módulo-> uma classe, com o módulo nomeado como a classe. Eu entendo a razão por trás do estilo python, mas não gosto muito de ter um arquivo muito grande contendo muitas classes. Acho difícil navegar, apesar de dobrar.
Outra razão é o controle de versão: ter um arquivo grande significa que seus commits tendem a se concentrar naquele arquivo. Isso pode potencialmente levar a uma maior quantidade de conflitos a serem resolvidos. Você também perde as informações de log adicionais de que seu commit modifica arquivos específicos (portanto, envolvendo classes específicas). Em vez disso, você vê uma modificação no arquivo do módulo, com apenas o comentário de confirmação para entender qual modificação foi feita.
Resumindo, se você prefere a filosofia python, siga as sugestões dos outros posts. Se você preferir a filosofia semelhante ao java, crie um Nib.py contendo a classe Nib.
fonte
spyder
ou um editor semelhante para ver um resumo de suas classes para auxiliar a navegação e dois painéis com o mesmo arquivo aberto em ambos. Além disso, leia PEP8. Python é para escrever Python e Java para Java, mas Python não é para escrever Java.bico está bem. Em caso de dúvida, consulte o guia de estilo do Python.
Do PEP 8 :
fonte
Do PEP-8: Nomes de pacotes e módulos :
fonte
O módulo foo em python seria o equivalente a um arquivo de classe Foo em Java
ou
O módulo foobar em python seria o equivalente a um arquivo de classe FooBar em Java
fonte