Descripción de la guía de estilos en Senseta, además de la documentación de pep8 para el cual usamos el linter de flake8 https://www.python.org/dev/peps/pep-0008/
Cuando usemos variables que representen estados, valores, elementos en texto ejemplo:
Bad example
operator_status = {
'status': 'active',
}
operator_status = {
'max_quantity': 18,
'gender': 'Masculino',
}
operator_status = {
'city': 'Bogotá DC',
}Se deben crear variables globales para que se maneje información homogénea en todo el proyecto entonces debería verse así
ACTIVE_CHOICES = 'active'
MAX_QUANTITY_CHOICES = 18
GENDER_MALE_CHOICES = 'Masculino'
CITY_BOGOTA_CHOICES = 'Bogotá DC'Estas variables van alojadas en un data.py
Good example
from app.XX import data
operator_status = {
'status': data.ACTIVE_CHOICES,
}
operator_status = {
'max_quantity': data.MAX_QUANTITY_CHOICES,
'gender': data.GENDER_MALE_CHOICES,
}
operator_status = {
'city': data.CITY_BOGOTA_CHOICES,
}- Use comillas sencillas
''para strings.
Usar / slash al final de las URLs
Bad example
view_path = 'events/_view/by_opened_by_operator'Good example
view_path = 'events/_view/by_opened_by_operator/'Usar una linea por cada dependencia, aún si son del mismo paquete.
Bad example
from app.method import function_one, function_two, function_treeGood example
from app.method import function_one
from app.method import function_two
from app.method import function_treeEn el caso de ser demasiadas, debemos importar solamente el paquete base
Good example
from app import method
response = method.function_two()
response = method.function_tree()
...Use asignación directa cuando pase una sola variable al contexto
Bad example
def get_context_data(self, **kwargs):
...
context.update({
'comment_form': CommentForm,
})
...Good example
def get_context_data(self, **kwargs):
...
context['comment_form'] = CommentForm
...Use update cuando pase multiples variables.
Bad example
def get_context_data(self, **kwargs):
...
context['comment_form'] = CommentForm
context['items_list'] = items_list
context['users_list'] = users_list
...Good example
def get_context_data(self, **kwargs):
...
context.update({
'comment_form': CommentForm,
'items_list': items_list,
'users_list': users_list,
})
...Se deben especificar los valores en el llamado de una función
def function_name(attr1, attr2):
return TrueBad example
function_name(626, "Modelo 50"):
return TrueGood example
function_name(attr1=626, attr2="Modelo 50"):
return TrueSe debe partir la función en varias líneas
def function_name(attr1, attr2):
return TrueBad examples
# Has 93 characters
def function_name(attr_name_1=attr_data_1, attr_name_2=attr_data_2, attr_name_3=attr_data_3):
return Truedef function_name(attr_name_1=attr_data_1,
attr_name_2=attr_data_2,
attr_name_3=attr_data_3
):
return Truedef function_name(
attr_name_1=attr_data_1,
attr_name_2=attr_data_2,
attr_name_3=attr_data_3):
return TrueGood example
def function_name(
attr_name_1=attr_data_1,
attr_name_2=attr_data_2,
attr_name_3=attr_data_3
):
return TrueBad example
# Has 93 lines
dict_1 = {'first_parameter_1': 'first_parameter_1', 'first_parameter_2': 'first_parameter_2'}dict_1 = {
'first_parameter_1': 'first_parameter_1',
'first_parameter_2': 'first_parameter_2'}Good example
dict_1 = {
'first_parameter_1': 'first_parameter_1',
'first_parameter_2': 'first_parameter_2'
}Bad example
# Has 93 lines
string_1 = 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, ...'Good example
string_1 = 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, '
'consectetur, ...'string_1 = '''
Neque porro quisquam est qui dolorem ipsum quia dolor si
t amet, consecteturt amet, consecteturt amet, consecteturt amet,
consectetu t amet, consectetur, ...
'''Se sugiere usar los emojis de https://gitmoji.carloscuesta.me/
Si se realiza un commit con una parte de los cambios y se necesita adjuntar una segunda parte, es recomendable fusionar estos dos o sobrescribir el commit así:
Aquí se agregan los primeros cambios
git add .
git commit -m "primer commit"
Aquí se realizan los cambios siguientes
git add .
git commit --amend -m "Commit informando los nuevos cambios"
Si el commit ya fué enviado "push" se debe hacer nuevamente "push -f" para sobrescribir el commit viejo , de lo contrario se hace el push request o merge request normal.
Esto solamente sobrescribe el commit anterior, para fusionar más de 2 commits ver el Rebase a continuación
Si hay más de un commit:
usa git rebase interactively
y se quiere integrar en un solo commit más completo y bien explicado:
git rebase -i <commit-id>~1
es el commit hasta donde se quiere unificar. Agrega el "~1" para incluir también el commit hasta donde se quiere unificar.
*Va a mostrar el listado de commits del mas antiguo al mas nuevo
pick e162eb3 :soccer: Commit 3
pick 1b9a12d :soccer: Commit 2
pick 7b4d76e :soccer: Commit 1
Y se debería cambiar así (en caso de querer unificarlos todos):
pick e162eb3 :soccer: Commit 3
s 1b9a12d :soccer: Commit 2
s 7b4d76e :soccer: Commit 1
luego de unificar los commits, debes poner un solo mensaje:
# This is a combination of 3 commits.
# This is the 1st commit message:
:soccer: Commit 3
# This is the commit message #2:
:soccer: Commit 2
# This is the commit message #3:
:soccer: Commit 1
Así:
# This is a combination of 3 commits.
# This is the 1st commit message:
:soccer: Commit 1 contains commit 2 and commit 3