Como programar¶
En general, sigue las mejores prácticas establecidas para cada lenguaje llenando los posibles huecos con sentido común.
Lineamientos Generales¶
El estilo importa
La manera como el código se alinea importa, porque el código es revisado, editado y publico. El código difícil de leer no está acorde con el espíritu del código abierto.
Consistencia
Si haces algo de cierta manera, debes ser capaz de justificarlo. No mezcles camelCase con guiones_bajos al menos que tengas una buena razón para hacerlo.
Sigue el código que te rodea
Si no sabes lo que haces intenta seguir lo que los demás han hecho.
Pruebas¶
En lenguajes y frameworks que proveen facilidades para pruebas, ¡escribe pruebas!.
Trabaja en tener 80% o más de cobertura, especialmente en:
- Privacidad: prueba que las cosas privadas son privadas.
- Código muy usado: por ejemplo, páginas iniciales o código en librerías.
- Bugs re-abiertos
Codificar pruebas toma más tiempo que hacer el código, debido a que suelen definir la funcionalidad de los productos. Las pruebas son muy valiosas porque nos permiten realizar cambios de manera rápida sin miedo afectar las funcionalidades.
La otra mitad de las pruebas es la integración contínua. Deberíamos estar corriendo nuestras pruebas en cada cambio realizado y ser capaces de decir con certeza que el código es correcto hasta nuestro mejor conocimiento.
Python¶
Hacemos lo que otros en la comunidad de Python han establecido:
- Seguir el PEP8.
- Hacemos pruebas usando check.py u otra utilidad que combine pep8.py y pyflakes.
- Seguimos las extensiones al PEP8 de Pocoo.
Sentencias de importación¶
Extendemos las sugerencias establecidas en el PEP8 para sentencias de importación. Estas mejoran sustancialmente la habilidad de conocer qué está y que no está disponible en un módulo dado.
Importa solo un módulo por sentencia de importación:
import os
import sys
no:
import os, sys
Separa los grupos de importes con una línea en blanco: librería estándar; Django (o framework); módulos de terceros; e importes locales:
import os
import sys
from django.conf import settings
import pyquery
from myapp import models, views
Alfabetiza tus importes, esto hará que tu código sea más fácil de escanear. Observa lo terrible que es esto:
import cows
import kittens
import bears
Con un orden sencillo:
import bears
import cows
import kittens
Imports primero, from
-imports después:
import x
import y
import z
from bears import pandas
from xylophone import bar
from zoos import lions
Eso es muchísimo más fácil de leer que:
from bears import pandas
import x
from xylophone import bar
import y
import z
from zoos import lions
Por último, cuando se importen objetos dentro de tu espacio de nombres
desde un paquete, utiliza el orden CONSTANTES
, Clases
, variables
de forma alfabética:
from models import DATE, TIME, Dog, Kitteh, upload_pets
Si es posible, sería más fácil importar el paquete completo. Especialmente
en el caso de métodos esto ayuda a responder la pregunta “¿de dónde saliste tu
?”
Malo:
from foo import you
def my_code():
you() # espera, ¿esto está definido en este archivo?
Bueno:
import foo
def my_code():
foo.you() # ah ok...
El espacio en blanco importa¶
- Usa siempre 4 espacios para indentar, no 2. Esto mejora la legibilidad considerablemente.
- Nunca utilices tabulaciones, la historia ha demostrado que no podemos manejarlas.
Las comillas¶
Usa comillas sencillas en vez de dobles o triples si puede representar una mejora:
'esto es bueno'
'esto \'es\' malo'
"esto 'es' bueno"
"esto es inconsistente, pero se acepta"
"""a veces 'esto' es "necesario"."""
'''nadie hace esto realmente'''
Django¶
Sigue las recomendaciones para Python. Hay algunas cosas en Django que harán tu vida más fácil:
Usa resolve('myurl')
y {{ url('myurl') }}
cuando hagas enlaces
a URLs internas. Esto manejará automáticamente hosts, nombres relativos
y rutas cambiadas por ti. Igualmente, usar estos métodos te dará mensajes
de error descriptivos si hay un enlace roto.
La indentación en las plantillas debería manejarse de la siguiente manera:
{% if indenting %}
<p>Así es que se hace</p>
{% endif %}
Playdoh¶
Las nuevas aplicaciones Web deberían estar basadas en Playdoh y las existentes deberían seguir el mismo espíritu de Playdoh. Playdoh reune lecciones que varios proyectos hechos en Django en Mozilla han aprendido y los envuelve en una plantilla para tus proyectos.
En el futuro, la mayor parte de los componentes de Playdoh serán movidos a librerías separadas de manera que esas características no se pierdan.
Javascript¶
HTML¶
Usa HTML5
Asegúrate de que tu código valida
No coloques CSS o JS en el HTML
Se semántico
Usa comillas dobles para los atributos:
<a href="#">Bueno</a> <a href='#'>Menos bueno</a>