Código limpio

Post on 10-May-2015

569 views 1 download

description

Básada en el libro de Clean Code: A Handbook of Agile Software Craftsmanship

Transcript of Código limpio

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