Skip to content

ivancarrancho/style_guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

style-guide

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/

Python - Flask

Variables

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,
    }

Generalities

  • Use comillas sencillas '' para strings.

URLS

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/'

Importaciones

Usar una linea por cada dependencia, aún si son del mismo paquete.

Bad example

    from app.method import function_one, function_two, function_tree

Good example

    from app.method import function_one
    from app.method import function_two
    from app.method import function_tree

En 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()
  ...

Get context

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,
    })

    ...

Llamados a función

Se deben especificar los valores en el llamado de una función

def function_name(attr1, attr2):
    return True

Bad example

function_name(626, "Modelo 50"):
    return True

Good example

function_name(attr1=626, attr2="Modelo 50"):
    return True

Funciones después de 80 caracteres

Se debe partir la función en varias líneas

def function_name(attr1, attr2):
    return True

Bad 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 True
def function_name(attr_name_1=attr_data_1,
    attr_name_2=attr_data_2,
    attr_name_3=attr_data_3
):
    return True
def function_name(
    attr_name_1=attr_data_1,
    attr_name_2=attr_data_2,
    attr_name_3=attr_data_3):
    return True

Good example

def function_name(
    attr_name_1=attr_data_1,
    attr_name_2=attr_data_2,
    attr_name_3=attr_data_3
):
    return True

Diccionarios/Json después de 80 caracteres

Bad 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'
}

String después de 80 caracteres

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, ...
    '''

Versionamiento

Mensaje

Se sugiere usar los emojis de https://gitmoji.carloscuesta.me/

Ammend

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.

Nota

Esto solamente sobrescribe el commit anterior, para fusionar más de 2 commits ver el Rebase a continuación

Rebase

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors