Está en la página 1de 28

FULLSTAPPS

CODING BEST
PRACTICES
Levi Velázquez
ED @ Mo Technologies
Temas
Agenda
Nombres
Funciones
Argumentos
Don't repeat yourself
Comentarios
Manejo de errores.
NOMBRES
Con significado
No debes necesitar agregar un comentario para explicar.
NOMBRES
Pronunciables
Tus variables o funciones deben poder ser pronunciables, por si
luego necesitan hablar sobre el código
NOMBRES
Funciones
Las funciones o métodos deben tener verbos que indiquen su
proposito.
NOMBRES
Variables
Deben tener nombres que representen lo que albergan.
NOMBRES
Clases
Los nombres de las clases deben ser sustantivos.
FUNCIONES
Hacer una sola cosa
Las funciones deben hacer una sola cosa.

SI SE PUEDE EXTRAER CÓDIGO DE LA


FUNCIÓN Y CREAR UNA NUEVA, ENTONCES
NUESTRA FUNCIÓN ESTABA HACIENDO MÁS
DE UNA COSA.
FUNCIONES
Hacer una sola cosa

QUÉ HACE ESTA FUNCIÓN


Si el usuario no existe, lo crea.
Crea un template HTML.
Inicializa el conector SMTP.
Envía email.

POR QUÉ ESTÁ MAL


Hace más de una cosa.
Prueba unitaria será una pesadilla.
Fácil de introducir errores.
Difícil de debuggear
¿SOLUCIÓN ?
DIVIDIR NUESTRA FUNCIÓN PRINCIPAL.

APLICAR EL PRINCIPIO ONE THING RULE.

FINDING YOUR CREATIVE NICHE | CHC 2020


FUNCIONES
Nivel de abstración
Debemos asegurar que la función haga el menor número de
cosas posibles, pero además que su nivel de abstracción en toda
la función sea el mismo.

Nivel de identación
Se debe evitar más de dos niveles de identación, esto por lo
general sucede cuando se usan muchos bloques if/else
anidados. Esto debe evitarse.
FUNCIONES
Aplicando lo anterior
FUNCIONES
Aplicando lo anterior

QUÉ TIENE DE MALO


Tiene 2 niveles de identación.
Hace más de una cosa.
Diferentes niveles de abstracción.
Difícil de leer.
Difícil de hacer prueba unitaria.
FUNCIONES
Aplicando lo anterior

CÓMO LO ARREGLAMOS
1) Reduciendo los niveles de identación

PRO-TIP

Si simplificamos la funciones, se puede


llegar a un punto donde no necesites usar
bloques if/else .
FUNCIONES
Aplicando lo anterior

CÓMO LO ARREGLAMOS
2) Identificamos las diferentes secciones
de nuestra función y las extraemos en
funciones separadas con un nombre
entendible.

RESULTADO
Ahora nuestra función buy_concert_ticket se
puede leer de forma natural.
Nuestras funciones intentan hacer una sola cosa.
No existe más de dos niveles de identación.
Las variables son claras.
Nuestra función principal tiene pocas líneas de
código.
FUNCIONES
Aplicando lo anterior

¿ SE PUEDE MEJORAR ?
Sí, podemos seguir extrayendo lógica de la
función principal.
ARGUMENTOS
Naming
Los nombres de los argumentos deben ser sobre los objetos sobre los cuales
hace referencia el nombre de la función
ARGUMENTOS
Número de argumentos
Mientras menos argumentos mucho mejor, el escenario ideal son las
funciones que no reciben argumentos. Mientras más argumentos reciben
son más difíciles de entender y seguro están haciendo más de una cosa.

FUNCIONES NILADICAS

No reciben ningún argumento


ARGUMENTOS
Número de argumentos
FUNCIONES MONADICAS
Reciben un argumento
Deben usarse para aplicar una transformación
sobre el mismo o hacer una pregunta sobre el
argumento
No se debe usar el argumento solo para retornar
valores
ARGUMENTOS
Número de argumentos
FUNCIONES DIADICAS
Reciben dos argumentos.
Requieren entender el orden en que se pasan los
argumentos.
Por lo general te toca ver la firma de la función.
ARGUMENTOS
Número de argumentos
FUNCIONES TRIADICAS O POLIADICAS
Reciben tres o más argumentos
Por lo general si una función recibe tres argumentos o más, esto
indica que probablemente se deba pasar un objeto.
ARGUMENTOS
Argumentos booleanos
FUNCIONES TRIADICAS O POLIADICAS
Deben evitarse.
Pasar un booleano es signo que la función puede hacer más de una
cosa.
DON'T REPEAT YOURSELF
Reutilizar código
Siempre debemos tratar de reutilizar código lo más que se pueda.
COMENTARIOS
Malos comentarios
Todo comentario que escribes para explicar la lógica de tu código,
es un signo que tu código no se explica por sí solo. Esto es una mala
práctica.
COMENTARIOS
Buenos comentarios
Comentarios Legales
TODO comentarios
Warnings
Informativos
MANEJO DE ERRORES
Lanzar errores
Es mala práctica retornar códigos de errores en vez de lanzar el error
como una excepción. Esto implica que el caller debe tratar de entender
qué tipo de error es y en base a eso actuar.
HEMOS LLEGADO AL FINAL.

Gracias.
GET SOCIAL FACEBOOK

WITH US Fullstapps

TWITTER
@levisvm
@fullstapps

YOUTUBE
FullStapps

INSTAGRAM
@fullstapps

También podría gustarte