Clean Code Anallely Olivares (@tsunllly)
Clean CodeAnallely Olivares (@tsunllly)
Un día cualquiera ...
Obtener camas bloqueadas* Devuelve una List<Cama>* Params:
● Fecha desde● Fecha hasta● Folio área enfermería ?
Antes/Después
Difícil léctura
○ Scroll a la derecha○ Hay que leer los comentarios○ Muchos posibles flujos
Día a día
Escribimos código
Leemos código !!
buen código / mal código
Buenos nombres
Significativospublic List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
Significativospublic List<int[]> getFlaggedRows() {
List<int[]> flaggedRows = new ArrayList<int[]>();
for (int[] row : gameBoard)
if (row[STATUS_VALUE] == FLAGGED)
flaggedRows.add(cell);
return flaggedRows;
}
Algunos nombres
genymdhms - Impronunciable
i, j - No encontrable
badgesList - Amarrado a un tipo
getActor / findActor - No coherencia
Recomendaciones
Verbo + Sustantivos registerUser getMax countWordsComo preguntas isValidPassword Declarativos markAsInactiveUser
Funciones
Una sola cosa bien hecha
● Facilita pruebas● Facilita reusar código
EsBloqueoDeCama
EstaDentroDeLasFechas
EsDelAreaRequerida
CrearCama
Funciones honestas
Sin efectos secundarios
Funciones pequeñas
Niveles de abstracción
● EsMenorEdad(User u)
● DiasTranscurridosDesde(Fecha fecha)
● DateTime, Now, millis, days, (-)
Leer de arriba a abajo
Argumentos
Ningún argumento :)
Argumentos
Flag
render(boolean isSuite)
* renderForSuite()
* renderForSingleTest()
Principio DRY
Don’t Repeat Yourself
DUPLICATION may be the root of all evil in software
Cometarios
Explain yourself in code
Sugerencias de formateo
* Las variables deben ser declaradas lo más cerca posible al lugar dónde se usan
Sugerencias de formato
Agrupar por afinidad
● Más cerca mientras más relacionados estén
● Separar con líneas en blanco diferencias en la lógica
Sugerencias de formato
Identación
¿Dejar todo en una sola línea?
El equipo dicta las reglasmetodo{….}
metodo {….}
Pruebas
assert assert assert assert
Pruebas pequeñas
Un assert por prueba
No vivir con las ventanas rotas
Finally