A guía de estilo establece unha serie de normas a seguir cando se programa en e-cidadania. Estas normas son inquebrantables. A guía de estilo segue moi preto o documento PEP8, con algunhas excepcións que veñen da guía de estilo interna de Pocoo.
Todos os imports deben estar situados na cabeceira do arquivo, por debaixo do comentario de cabeceira. Os imports de módulos python deben preceder a todos os demais, e as librarías externas ou módulos de terceiras partes deben preceder aos das aplicacións.
Exemplo:
import os
import sys
from extlib import function
from myapp.module import function
Se unha liña de código non cabe en 80 columnas, intenta reducilo declarando variables previamente. Se aínda non encaixa, podes dividir as liñas da seguinte forma:
Sentencias con paréntese:
website = models.URLField(_('Website'), verify_exists=True,
max_length=200, null=True, blank=True,
help_text=_('The URL will be checked'))
Declaracións:
this_is_a_very_long(function_call, 'with many parameters') \
.that_returns_an_object_with_an_attribute
MyModel.query.filter(MyModel.scalar > 120) \
.order_by(MyModel.name.desc()) \
.limit(10)
Listas, tuplas e diccionarios:
items = [
'this is the first', 'set of items', 'with more items',
'to come in this line', 'like this'
]
dict = {
('mobile': phone),
('car': key),
('another': thing),
}
Cada función e clase debe estar separado por dúas liñas en branco. O código dentro dunha clase ou método debe estar separado por unha liña en branco.
Exemplo:
class ListDocs(ListView):
----blank line----
"""
List all documents stored whithin a space.
"""
paginate_by = 25
context_object_name = 'document_list'
----blank line----
def get_queryset(self):
place = get_object_or_404(Space, url=self.kwargs['space_name'])
objects = Document.objects.all().filter(space=place.id).order_by('pub_date')
return objects
----blank line----
def get_context_data(self, **kwargs):
context = super(ListDocs, self).get_context_data(**kwargs)
context['get_place'] = get_object_or_404(Space, url=self.kwargs['space_name'])
return context
----blank line----
----blank line----
def whatever(args):
----blank line----
"""
A comment.
"""
this_is_something = 0
O código X/HTML debe estar sangrado con 4 espazos por nivel igual que o código python, sen excepcións.
Note
Poida que haxa código antigo que siga a anterior norma de sangría que establecía dous espazos por nivel. Se ves algún arquivo así agradeceríamos que nos enviases un parche para solucionalo.
A sangría é de 4 espazos, igual que no código python.
Exemplo:
body {
background: #FAFAFA;
padding: 0;
margin: 0;
font-family: Verdana, "Lucida Sans", Arial;
font-size: 1em;
color: #000;
cursor: default;
}
Ao código javascript aplícanselle as mesmas normas que ao código python.