-
Notifications
You must be signed in to change notification settings - Fork 16
Estilo de codificação
Seguimos o estilo de codificação do Django Project. Você pode conferí-la em Coding style.
Abaixo segue a tradução de alguns padrões. Por favor siga esses padrões de codificação quando for escrever código para ser incluído no djangobrasil.org.
- Quando algo for omitido, siga a PEP 8 (tradução).
Você pode usar o pep8 como ferramenta para verificar algum problema quanto a conformidade do seu código com o PEP 8. Lembre-se o PEP 8 é somente um guia, dessa forma, o estilo do código já escrito deve ser respeitado em primeiro lugar. - Sempre utilize espaços para a indentação.
- Utilize underscores, em vez de camelCase, para os nomes de variáveis, funções e métodos. Exemplo: poll.get_unique_voters(), not poll.getUniqueVoters.
- Utilize InitialCaps para os nomes de classes (ou para funções factory que retornam classes).
Nas docstrings, utilize “action words” como:
def foo():
"""
Calcula alguma coisa e retorna o resultado.
"""
pass
Abaixo um exemplo do que não deve ser feito:
def foo():
"""
Calcular alguma coisa e retornar o resultado.
"""
pass
No código dos templates, utilize um (e somente um) espaço entre as chaves e o conteúdo da tag.
Correto:
{{ foo }}
Errado:
{{foo}}
Quando for escrever um view, o primeiro parâmetro da função deve ser nomeado request.
Correto:
def my_view(request, foo):
# ...
Errado:
def my_view(req, foo):
# ...
Os nomes dos atributos devem ser todos em caixa baixa (lowercase), utilizando underscores ao invés de camelCase.
Correto:
class Pessoa(models.Model):
primeiro_nome = models.CharField(max_length=20)
ultimo_nome = models.CharField(max_length=40)
Errado:
class Pessoa(models.Model):
PrimeiroNome = models.CharField(max_length=20)
Ultimo_Nome = models.CharField(max_length=40)
A classe Meta deve ser declarada depois da declaração dos atributos, com uma linha em branco separando os atributos e a definição da classe.
Correto:
class Pessoa(models.Model):
primeiro_nome = models.CharField(max_length=20)
ultimo_nome = models.CharField(max_length=40)
class Meta:
verbose_name_plural = 'pessoas'
Errado:
class Pessoa(models.Model):
primeiro_nome = models.CharField(max_length=20)
ultimo_nome = models.CharField(max_length=40)
class Meta:
verbose_name_plural = 'pessoas'
Errado:
class Pessoa(models.Model):
class Meta:
verbose_name_plural = 'pessoas'
primeiro_nome = models.CharField(max_length=20)
ultimo_nome = models.CharField(max_length=40)
A ordem das classes internas e os métodos padrões deve ser como o seguinte (perceba que nem todos são obrigatórios):
- Todos os campos do banco de dados
- Atributos do custom manager
- class Meta
- def unicode()
- def str()
- def save()
- def get_absolute_url()
- Qualquer método personalizado
Se for definido algumas escolhas para um certo atributo do model, defina as escolhas como um tupla de tuplas, com o nome todo em caixa alta (uppercase). As escolhas devem ser definidas próximo ao início do módulo do model ou logo acima da classe do model. Exemplo:
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)