código de calidad y buenas prácticas...
TRANSCRIPT
Código de calidad y
buenas prácticas ágilesbuenas prácticas ágiles
Carlos Fontela
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Código de calidad y
buenas prácticas ágiles
A3F
buenas prácticas ágiles
Carlos Fontela
Antes de empezar
Lleve lo que necesite…
Recordemos:
“El código es el único artefacto del desarrollo
2c2011 2
“El código es el único artefacto del desarrollo de software que siempre se va a construir” (Carlos Fontela)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Antes de empezar
“El código es el único artefacto del desarrollo
A3F
“El código es el único artefacto del desarrollo de software que siempre se va a construir”
Agenda
Calidad en general
Temas de legibilidad
Guías para mejora de desempeño
2c2011 3
Otros temas
Buenas prácticas ágiles
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Agenda
Guías para mejora de desempeño
A3F
Calidad
2c2011 4
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Calidad
A3F
Calidad del software
No es algo objetivo
¿Qué importa más?
Código claro y mantenible
Desempeño (performance) de la aplicación
2c2011 5
Desempeño (performance) de la aplicación
Performance del usuario
Portabilidad a distintos ambientes
Todo depende del cliente y de la aplicación
(criticidad, longevidad…)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Calidad del software
Código claro y mantenible
Desempeño (performance) de la aplicación
A3F
Desempeño (performance) de la aplicación
Portabilidad a distintos ambientes
Todo depende del cliente y de la aplicación
(criticidad, longevidad…)
Principio Nº 1: no repetir
¿Se entiende por qué?
Extraer métodos
2c2011 6
Extraer clases, por delegación
o por generalización
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Principio Nº 1: no repetir
A3F
Extraer clases, por delegación
Principio Nº 2: estandarizar
Nombres
2c2011 7
Nombres
Formatos: líneas en blanco, sangrías, etc.
Comentarios
=> Código autodocumentado
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Principio Nº 2: estandarizar
A3F
Formatos: líneas en blanco, sangrías, etc.
=> Código autodocumentado
Principio Nº 3: no sorprender
Suponer igual nivel del desarrollador que va a
necesitar mi código
Evitar lucirse
No explicar lo obvio
2c2011 8
No explicar lo obvio
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Principio Nº 3: no sorprender
Suponer igual nivel del desarrollador que va a
A3F
Reflexión
“Now listen. We are paying $600 an hour for
this computer and $2 an hour for you, and I
want you to act accordingly.”
Según Barry Boehm, lo que su jefe le dijo en su
2c2011 9
Según Barry Boehm, lo que su jefe le dijo en su
primer trabajo (1950s)
¿Hasta qué punto sigue siendo nuestra
mentalidad?
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Reflexión
“Now listen. We are paying $600 an hour for
this computer and $2 an hour for you, and I
want you to act accordingly.”
Según Barry Boehm, lo que su jefe le dijo en su
A3F
Según Barry Boehm, lo que su jefe le dijo en su
¿Hasta qué punto sigue siendo nuestra
Legibilidad
2c2011 10
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Legibilidad
A3F
Legibilidad: por qué
El código se escribe una vez y se lee muchas
Escribir código para humanos
En un texto usamos:
Títulos de distinto nivel
2c2011 11
Títulos de distinto nivel
Sangrías
Signos de puntuación
Tipografías especiales
¿Por qué no hacer el código legible?
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Legibilidad: por qué
El código se escribe una vez y se lee muchas
Escribir código para humanos
A3F
¿Por qué no hacer el código legible?
Nombres (1)
Ser descriptivo
lineasPorPagina es mejor que lpp
distanciaEnMetros es mejor que Distancia
Poner antónimos en forma consistente: mayor, menor / min, max
No usar números: total1, total2
Hablar en términos del problema y no de la solución
2c2011 12
Hablar en términos del problema y no de la solución
empleados en vez de arregloEmpleados
Usar pocas abreviaturas
Salvo en nombres muy largos: num, cant, long, max, min
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Nombres (1)
lineasPorPagina es mejor que lpp
distanciaEnMetros es mejor que Distancia
Poner antónimos en forma consistente: mayor, menor / min, max
Hablar en términos del problema y no de la solución
A3F
Hablar en términos del problema y no de la solución
empleados en vez de arregloEmpleados
Salvo en nombres muy largos: num, cant, long, max, min
Nombres (2)
Evitar significados ocultos
“long” es la longitud del documento, o
Que se puedan leer en algún idioma
Casos especiales , cuando no hay nombres mejores
i, i, k, para índices
2c2011 13
i, i, k, para índices
Por qué no usar un índice numero
Tmp, temp, para temporales y auxiliares
Variables booleanas
encontrado, terminado, error
No expresarlas en forma negativa
Que se lean como verdadera o falsa: “
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Nombres (2)
“long” es la longitud del documento, o -1 si no se encontró
Que se puedan leer en algún idioma
Casos especiales , cuando no hay nombres mejores
A3F
numero
Tmp, temp, para temporales y auxiliares
No expresarlas en forma negativa
Que se lean como verdadera o falsa: “sexo” no es buen nombre
Nombres de métodos
Que describa todo lo que hace el método
Que describa la intención (el qué) y no detalles de
implementación (el cómo)
2c2011 14
eliminarEmpleado: nombre
Malos sucedáneos: procesarEmpleado ,
buscarEmpleadoEliminar, buscEmpEl, bee,
buscarEliminar, findEmpleadoDelete
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Nombres de métodos
Que describa todo lo que hace el método
Que describa la intención (el qué) y no detalles de
A3F
Malos sucedáneos: procesarEmpleado ,
buscarEmpleadoEliminar, buscEmpEl, bee,
buscarEliminar, findEmpleadoDelete
Métodos y legibilidad
Tratar de que no dependan de un orden de ejecución
Si no, documentarlo adecuadamente
Recursividad sólo cuando ayuda a la legibilidad
Y sólo al nivel de un método
No: A -> B -> A
2c2011 15
No: A -> B -> A
Que afecte a la clase en la que está declarado
Si es así, suele tener el nombre de otra clase en su nombre
Si no, moverlo de clase
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Métodos y legibilidad
Tratar de que no dependan de un orden de ejecución
Si no, documentarlo adecuadamente
Recursividad sólo cuando ayuda a la legibilidad
A3F
Que afecte a la clase en la que está declarado
Si es así, suele tener el nombre de otra clase en su
Parámetros
Que no sean muchos
No más de 7, y si es menos, mejor
Que estén ordenados con algún criterio
2c2011 16
Mantener el criterio en diferentes métodos
Chequear valores válidos a la entrada
En las referencias, ver que no estén en nil
Los valores de entrada no deben cambiarse
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Parámetros
No más de 7, y si es menos, mejor
Que estén ordenados con algún criterio
A3F
Mantener el criterio en diferentes métodos
Chequear valores válidos a la entrada
En las referencias, ver que no estén en nil
Los valores de entrada no deben cambiarse
Variables locales
Inicialización: siempre explícita
Un uso para cada variable
Que la vida de la variable sea lo más corta posible
2c2011 17
posible
Usar variables booleanas para guardar partes de tests complicados
if ( (anio % 400 == 0) ||
((anio % 4 == 0) && (anio % 100 != 0) ) …
O métodos booleanos
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Variables locales
Inicialización: siempre explícita
Un uso para cada variable
Que la vida de la variable sea lo más corta
A3F
Usar variables booleanas para guardar partes
((anio % 4 == 0) && (anio % 100 != 0) ) …
Números mágicos
( 1 to: 14) do: …
(usuario id = 1234) ifTrue: […]
Evitar todo “hardcodeo” o “números
mágicos”
2c2011 18
mágicos”
¿Por qué?
Salvo algunos 0, 1, ‘’, nil, y cosas que no cambian
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Números mágicos
// 14 clientes
(usuario id = 1234) ifTrue: […]
Evitar todo “hardcodeo” o “números
A3F
Salvo algunos 0, 1, ‘’, nil, y cosas que no cambian
Sangrías y espacios
No tener miedo de usar espacios
(a=b)ifTrue:[Transcript show:’OK’]
(a = b) ifTrue: [ Transcript show: ’OK’ ]
2c2011 19
Usar líneas en blanco
Separar clases si van en el mismo archivo
Usar paréntesis sobreabundantes para aclarar
Usar layouts del lenguaje
O al menos siendo consistentes
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Sangrías y espacios
No tener miedo de usar espacios
(a=b)ifTrue:[Transcript show:’OK’]
(a = b) ifTrue: [ Transcript show: ’OK’ ]
A3F
Separar clases si van en el mismo archivo
Usar paréntesis sobreabundantes para aclarar
O al menos siendo consistentes
Comentarios (1)
Son buenos para aclarar código
Aunque deberíamos tratar de aclarar el código antes
O como resumen de una secuencia de acciones
Aunque deberíamos tratar de separar en un método
2c2011 20
Aunque deberíamos tratar de separar en un método
No repetir en los comentarios lo que dice el código
“ asigno 1 a x: ”
x := 1.
Corolario: no deberían abundar
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Comentarios (1)
Son buenos para aclarar código
Aunque deberíamos tratar de aclarar el código antes
O como resumen de una secuencia de acciones
Aunque deberíamos tratar de separar en un método
A3F
Aunque deberíamos tratar de separar en un método
No repetir en los comentarios lo que dice el código
Corolario: no deberían abundar
Comentarios (2)
Que los comentarios sean fáciles de mantener
El comentario debe ir antes del código al que se refieren
Preparan mejor al lector
2c2011 21
A veces conviene ponerlos al final de la línea
Casos especiales a documentar con comentarios
Efectos laterales
Restricciones de un método o clase
Nombres de algoritmos, fuentes (de dónde lo saqué)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Comentarios (2)
Que los comentarios sean fáciles de mantener
El comentario debe ir antes del código al que se
A3F
A veces conviene ponerlos al final de la línea
Casos especiales a documentar con comentarios
Restricciones de un método o clase
Nombres de algoritmos, fuentes (de dónde lo saqué)
Condicionales y ciclos
Cuidar los >=, <=, >, <
Ojo con anidaciones profundas
No más de 3 niveles
Ordenar los “case” de los “switch”
Orden lógico: alfabético, numérico
2c2011 22
Orden lógico: alfabético, numérico
Hacer obvio al lector la manera de salir del ciclo
Usar salidas explícitas de ciclos cuando se pueda
O incluso retornos de métodos
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Condicionales y ciclos
Ojo con anidaciones profundas
Ordenar los “case” de los “switch”
Orden lógico: alfabético, numérico
A3F
Orden lógico: alfabético, numérico
Hacer obvio al lector la manera de salir del
Usar salidas explícitas de ciclos cuando se
O incluso retornos de métodos
Tabulaciones de resultados
Días de un mes
diasMes := #(31 28 31 30 31 30 31 31 30 31 30 31 ).
( (mes > 0) & (mes <= 12) )
ifTrue: [resultado := diasMes at: mes]
ifFalse: [Error signal new].
2c2011 23
ifFalse: [Error signal new].
( (mes = 2) & (anio bisiesto) )
ifTrue: [resultado := 29]
¿Es mejor que un “switch”?
Depende de cada uno
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Tabulaciones de resultados
diasMes := #(31 28 31 30 31 30 31 31 30 31 30 31 ).
A3F
Desempeño
2c2011 24
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Desempeño
A3F
Mejora de desempeño
Resistir la tentación
No siempre el usuario percibe las mejoras en el código, sino que privilegia su propia experiencia
¿Mejorar el hardware?
2c2011 25
¿Mejorar el hardware?
Cuando todo falle…
Mejoramos el código
Pero sólo en las partes críticas
(recordar a Paretto: 80-20)
Usar “profilers” si los tenemos
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Mejora de desempeño
No siempre el usuario percibe las mejoras en el código, sino que privilegia su propia
A3F
Pero sólo en las partes críticas
20)
Usar “profilers” si los tenemos
Algunas posibilidades (1)
Evitar el uso de memoria externa cuando se puede usar memoria interna
Accesos innecesarios a disco
En las evaluaciones lógicas, utilizar la opción de cortocircuito
2c2011 26
de cortocircuito
En un “(a & b) ifTrue:” no necesitamos evaluar b si a es falso
En un “(a | b) ifTrue:” no necesitamos evaluar b si a es verdadero
Verificar si el entorno no lo hace solo
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Algunas posibilidades (1)
Evitar el uso de memoria externa cuando se puede usar memoria interna
Accesos innecesarios a disco
En las evaluaciones lógicas, utilizar la opción
A3F
En un “(a & b) ifTrue:” no necesitamos evaluar b si
En un “(a | b) ifTrue:” no necesitamos evaluar b si
Verificar si el entorno no lo hace solo
Algunas posibilidades (2)
Ordenar las preguntas en acciones switch
Conviene evaluar primero las más frecuentes y menos costosas de evaluar
switch (mes) {
2c2011 27
switch (mes) {
case 1, 3, 5, 7, 8, 10, 12 : dias = 31; break;
case 4, 6, 9, 11 : dias = 30; break;
case 2 if (anio.bisiesto())
dias = 29;
else dias = 28;
break;
default: throw new MesInvalidoException();
}
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Algunas posibilidades (2)
Ordenar las preguntas en acciones if compuestas y
Conviene evaluar primero las más frecuentes y menos
A3F
case 1, 3, 5, 7, 8, 10, 12 : dias = 31; break;
case 4, 6, 9, 11 : dias = 30; break;
default: throw new MesInvalidoException();
Algunas posibilidades (3)
Calcular todo lo que se pueda antes de entrar a un ciclo
// mal ejemplo:
f1 leerFecha.
f2 leerFecha.
100 timesRepeat: [
periodo f1 diasHasta: f2.
2c2011 28
periodo f1 diasHasta: f2.
periodoDoble := periodo * 2.
f3 := Fecha hoy.
i := i+1;
Transcript show: i * periodo + periodoDoble ]
Usar tipos por valor siempre que se pueda
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Algunas posibilidades (3)
Calcular todo lo que se pueda antes de entrar a un ciclo
A3F
Transcript show: i * periodo + periodoDoble ]
Usar tipos por valor siempre que se pueda
Algunas posibilidades (4)
Usar tipos enteros en vez de punto flotante
int mejor que double
Tabular datos en vez de usar funciones trascendentes
Salvo que se requiera mucha precisión
2c2011 29
Salvo que se requiera mucha precisión
En algunos casos es sencillo
Liberar memoria que ya no se necesita, si el entorno no lo hace solo
Usar lenguajes compilados o de menor nivel
Assembler >> C++ >> Java / C# / Smalltalk >> PHP / Python
Si la modularización es buena, podemos acotarlo
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Algunas posibilidades (4)
Usar tipos enteros en vez de punto flotante
Tabular datos en vez de usar funciones
Salvo que se requiera mucha precisión
A3F
Salvo que se requiera mucha precisión
Liberar memoria que ya no se necesita, si el entorno
Usar lenguajes compilados o de menor nivel
Assembler >> C++ >> Java / C# / Smalltalk >> PHP /
Si la modularización es buena, podemos acotarlo
Después de la mejora
Probar su efectividad
Muchas presuntas mejoras no resultan, porque los compiladores, entornos de ejecución y otros, las introducen en forma automática
No hay expertos generalistas
2c2011 30
No hay expertos generalistas
Hay cosas que han cambiado con el tiempo
P. ej., llamadas a funciones, arreglos multidimensionales
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Después de la mejora
Muchas presuntas mejoras no resultan, porque los compiladores, entornos de ejecución y otros, las introducen en forma automática
No hay expertos generalistas
A3F
No hay expertos generalistas
Hay cosas que han cambiado con el tiempo
P. ej., llamadas a funciones, arreglos multidimensionales
Otras ideas
2c2011 31
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Otras ideas
A3F
Warnings
Mirar los “warnings” de los compiladores
Evita errores posteriores
Aunque algunos son muy molestos
2c2011 32
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Warnings
Mirar los “warnings” de los compiladores
Aunque algunos son muy molestos
A3F
Referencias
Cuando ya no quiero una referencia, recordar
poner el nil
Facilita tareas al recolector de basura
Inicializar siempre con nil si no sé qué hacer
2c2011 33
Inicializar siempre con nil si no sé qué hacer
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Referencias
Cuando ya no quiero una referencia, recordar
Facilita tareas al recolector de basura
Inicializar siempre con nil si no sé qué hacer
A3F
Inicializar siempre con nil si no sé qué hacer
Herramientas
Analizadores de código
Profilers: buscan dónde pasa más tiempo la
aplicación
2c2011 34
Extractores de código muerto
Buscadores de código repetido
Compiladores que mejoran el desempeño
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Herramientas
Profilers: buscan dónde pasa más tiempo la
A3F
Extractores de código muerto
Buscadores de código repetido
Compiladores que mejoran el desempeño
Buenas prácticas ágiles
2c2011 35
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Buenas prácticas ágiles
A3F
Buenas prácticas XP (I)
¿Probar programas es bueno?
Hacer pruebas unitarias y funcionales todo el tiempo
El desarrollo es dirigido por las pruebas: TestDevelopment (TDD)
Se diseñan antes de codificar
2c2011 36
Se diseñan antes de codificar
Ojo: mucha disciplina
¿Los diseños de software son cambiantes?
El diseño evoluciona junto con la programaci
Lo hacen los propios programadores
Minimizar documentación que se guarda, si no se la va a mantener actualizada
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Buenas prácticas XP (I)
¿Probar programas es bueno?
Hacer pruebas unitarias y funcionales todo el tiempo
El desarrollo es dirigido por las pruebas: Test-Driven
A3F
os de software son cambiantes?
o evoluciona junto con la programación
Lo hacen los propios programadores
Minimizar documentación que se guarda, si no se la va a
Buenas prácticas XP (II)
¿Hacer pruebas de integración es importante?
Integración sigue inmediatamente a las pruebas unitarias
Evita que sea cada vez más complicado integrar código de varias fuentes
2c2011 37
código de varias fuentes
¿Revisar la calidad del código es recomendable?
Revisar código todo el tiempo
Pair-programming
Se mantiene más el foco
Refactorizaciones (cambio de diseño para hacerlo simple, sin cambiar funcionalidad)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Buenas prácticas XP (II)
¿Hacer pruebas de integración es importante?
Integración sigue inmediatamente a las pruebas
Evita que sea cada vez más complicado integrar código de varias fuentes
A3F
código de varias fuentes
¿Revisar la calidad del código es
Revisar código todo el tiempo
Refactorizaciones (cambio de diseño para hacerlo simple, sin cambiar funcionalidad)
Buenas prácticas XP (III)
¿Estándares de codificación permiten una mejor comunicación y reducen errores?
Fijar estándares precisos y estrictos
¿El desarrollo incremental es positivo?
Hacer iteraciones muy cortas
2c2011 38
Hacer iteraciones muy cortas
Diseñar una pequeña porción, codificarla y probarla
Preocuparse sólo por lo que se está haciendo
Nada por adelantado
Recordar: el cliente pide (requerimientos), no necesariamente lo que quiere (expectativas), ni mucho menos lo que necesita (necesidad)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Buenas prácticas XP (III)
¿Estándares de codificación permiten una mejor comunicación y reducen errores?
Fijar estándares precisos y estrictos
¿El desarrollo incremental es positivo?
A3F
Diseñar una pequeña porción, codificarla y probarla
Preocuparse sólo por lo que se está haciendo
el cliente pide (requerimientos), no necesariamente lo que quiere (expectativas), ni mucho menos lo que necesita (necesidad)
Buenas prácticas XP (IV)
¿Es importante tener una comunicación frecuente con el
cliente?
Un cliente acompañando el desarrollo
Fundamental para escribir pruebas de aceptación (UAT) y priorizar
tareas
2c2011 39
¿Es frecuente que los proyectos se suspendan por falta de
presupuesto?
Usar el alcance como variable de ajuste
Implementar primero lo que tiene mayor valor para el cliente
La primera iteración debe implementar un esqueleto, con
funcionalidades básicas
En la mayoría de los sistemas, el 20% del desarrollo genera el 80% del
beneficio
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Buenas prácticas XP (IV)
¿Es importante tener una comunicación frecuente con el
Un cliente acompañando el desarrollo
Fundamental para escribir pruebas de aceptación (UAT) y priorizar
A3F
¿Es frecuente que los proyectos se suspendan por falta de
Usar el alcance como variable de ajuste
Implementar primero lo que tiene mayor valor para el cliente
La primera iteración debe implementar un esqueleto, con
En la mayoría de los sistemas, el 20% del desarrollo genera el 80% del
Buenas prácticas XP (V)
Simplicidad
“The simplest thing that could possibly work”
Complejidad dificulta refactorizaciones, comunicación y depuraciones
No implementar lo que no se sabe si servirá,
y en el 80% de los casos no sirve
2c2011 40
y en el 80% de los casos no sirve
Se mantiene baja la inversión inicial en el proyecto
El código ejecutable permanece más chico
YAGNI
La simplicidad cuesta trabajo y es fruto de un buen diseño
Las prácticas de XP se realimentan: ¿somos ágiles
realmente?
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Buenas prácticas XP (V)
“The simplest thing that could possibly work”
Complejidad dificulta refactorizaciones, comunicación y depuraciones
No implementar lo que no se sabe si servirá,
A3F
Se mantiene baja la inversión inicial en el proyecto
El código ejecutable permanece más chico
La simplicidad cuesta trabajo y es fruto de un buen diseño
Las prácticas de XP se realimentan: ¿somos ágiles
Claves: los mandamientos del alumno de Algoritmos III (1ra parte)
No repetirás código
No dejarás a tu prójimo lo que no quieres que te dejen a ti
Escribirás código legible
2c2011 41
Escribirás código legible
Usarás la barra espaciadora y el salto de línea de tu teclado
“La optimización prematura es la raíz de todos los males” (Donald Knuth)
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Claves: los mandamientos del alumno de Algoritmos III (1ra parte)
No dejarás a tu prójimo lo que no quieres que
A3F
Usarás la barra espaciadora y el salto de línea
“La optimización prematura es la raíz de todos los males” (Donald Knuth)
Lectura obligatoria
“Continuous Integration”, de Martin Fowler
Lo tienen en:
http://www.martinfowler.com/articles/continuousIntegration.html
2c2011 42
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Lectura obligatoria
“Continuous Integration”, de Martin Fowler
http://www.martinfowler.com/articles/continuousInt
A3F
Lecturas opcionales
Code Complete, Steve McConnell
Capítulos 6 a 8, 10 a 13, 14 a 16, 18 a 19: buena parte del libro
No está en la Web ni en biblioteca
2c2011 43
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Lecturas opcionales
Code Complete, Steve McConnell
Capítulos 6 a 8, 10 a 13, 14 a 16, 18 a 19: buena
No está en la Web ni en biblioteca
A3F
Qué sigue
Primer parcial
POO en lenguajes con tipos estáticos
Desarrollo de software
2c2011 44
Desarrollo de software
Temas de diseño
No se puede mostrar la imagen. Puede que su equipo no tenga suficiente memoria para abrir la imagen o que ésta esté dañada. Reinicie el equipo y, a continuación, abra el archivo de nuevo. Si sigue apareciendo la x roja, puede que tenga que borrar la imagen e insertarla de nuevo.
Qué sigue
POO en lenguajes con tipos estáticos
Desarrollo de software
A3F
Desarrollo de software