-
Notifications
You must be signed in to change notification settings - Fork 10
Folha de Estilo
Felipe Borges edited this page Nov 5, 2017
·
6 revisions
Data | Versão | Descrição | Autor |
---|---|---|---|
07/09/2017 | 1.0 | Inserção da Folha de estilo | João Paulo |
29/10/2017 | 1.1 | Adição da folha de estilo dos testes | Felipe Borges |
04/11/2017 | 1.2 | Adição do estilo de nomeação dos testes e class de testes. | Felipe Borges |
1. Nomeação
2. Formatação
3. Comentários
4. Teste
5. Imports
6. Estilo do Template
7. Estilo da View
8. Estilo da Model
9. Uso do django.conf.settings
10. Estruturas de Decisão
11. Diversos
-
Exemplo : exemplo_de_variavel
-
1.3. Os métodos e parâmetros devem ser nomeados em caixa baixa, com cada palavra separada com um underscore.
Exemplo : exemplo_de_metodo()
def function():
"""
A test docstring looks like this.
"""
def function():
#Do something.
# TODO(João) Mudar esse formato de cálculo.
test_view_autocomplete.py
ou
test_model_patient.py
Test<Nome da classe a ser testada>
Exemplo:
class TestAutocomplete:
class TestUser:
A nomeação do teste deve seguir o padrão:
def test_<nome da classe>_<motivo da realização do teste>:
Exemplo :
def test_autocomplete_search_messages:
-
- Future ( futuro )
- Standard library ( biblioteca padrão)
- Third-Party libraries ( bibliotecas de terceiros)
- Django ( outros componentes do Django )
- Local Django ( componentes locais do Django )
- Try / excepts
# future
from __future__ import unicode_literals
# standard library
import json
from itertools import chain
# third-party
import bcrypt
Django
from django.http import Http404
from django.http.response import (
Http404, HttpResponse, HttpResponseNotAllowed, StreamingHttpResponse,
cookie,
)
# local Django
from .models import LogEntry
# try/except
try:
import yaml
except ImportError:
yaml = None
CONSTANT = 'foo'
class Example(object):
# ...
from django.views import View
from django.views.generic.base import View
{{ information }}
Em vez de :
{{information}}
def my_view(request, foo):
# ...
Em vez de :
def my_view(req, foo):
# ...
Faça isso:
class Person(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=40)
Em vez de:
class Person(models.Model):
First_name = models.CharField(max_length=20)
Last_name = models.CharField(max_length=40)
Faça isso:
class Person(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=40)
class Meta:
verbose_name_plural = 'people'
Em vez de:
class Person(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=40)
class Meta:
verbose_name_plural = 'people'
Não faça isso também:
class Person(models.Model):
class Meta:
verbose_name_plural = 'people'
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=40)
-
8.3. A ordem de model inner classes e s_tandard methods_ deve ser a seguinte (observando que estes não são todos necessários):
- Todos os campos de banco de dados
- Atributos de gerenciador personalizados
- Classe Meta
- def str()
- def save()
- def get_absolute_url()
- Quaisquer métodos personalizados
class MyModel(models.Model):
DIRECTION_UP = 'U'
DIRECTION_DOWN = 'D'
DIRECTION_CHOICES = (
(DIRECTION_UP, 'Up'),
(DIRECTION_DOWN, 'Down'),
)
-
- Correto:
if not users:
print 'no users'
if foo == 0:
self.handle_zero()
if i % 10 == 0:
self.handle_multiple_of_ten()
- Incorreto:
if len(users) == 0:
print 'no users'
if foo is not None and not foo:
self.handle_zero()
if not i % 10:
self.handle_multiple_of_ten()
-
- Declarações de importação longas.
- URL's nos comentários.
Receituário Médico - GPP/MDS 2017.2