Diseo de cdigo
Nicols PaezMayo 2009
Orgullo
Profesionalismo
Motivacin
Percepcin:
El software es infinitamente
modificable
Realidad:
El software soporta un negocio,
y todo negocio cambia, entonces
el software se adapta o se tira
Objetivos
Mantenibilidad
Simplicidad
ClaridadFlexibilidad
Legibilidad
Principios S.O.L.I.D
Single responsability principle
Open close principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
Bajo acoplamiento
Cada clase representa una nica
abstraccin (entidad/proceso)
Debe poder nombrasela facilmente
con un sustantivo
Agrupar la lgica segn su
estabilidad
Aislar detalles de implementacin
en clases separadas
Alta cohesin
Cada clase representa una nica
abstraccin
Agrupar la lgica contemplando su
estabilidad
Aislar detalles de implementacin
Clases
Datos y lgica juntos
Tasa de cambio
Simetria
Repeticin mnima
Nombres
No amarretear
Deben reflejar el rol
Deben indicar el qu y no el como
Utilizar convenciones
Legibilidad
Identar
Hablar en trminos del problema y
no de la solucin
No utilizar valores en duro,
utilizar constantes o enumerados
No utilizar 0/1 como true/false
Respetar convenciones
Constructores
Deben dejar la instancia en un
estado vlido y lista para actuar
En lugar de agregar varios
constructores, ofrecer mtodos de
clase que agreguen semntica
Mtodos
Visibilidad mnima
Indicar posibles excepciones
Minimizar condicionales
Evidenciar condiciones de corte
de los cicles
Posibilidad de prueba :(
Mensajero Socket
Posibilidad de prueba :)
Mensajero ISocket
Socket MockSocket
Parmetros
Nombrarlos segn el rol y segn
el tipo
Ordenarlos segn algn criterio
En caso de valores por defecto
proveer sobrecarga
Comentarios
Repetidores de cdigo
Explicadores de cdigo
Marcadores (TODO)
Resumenes de cdigo
Descriptores de la intencin del
cdigo
Informacin que no puede
expresarse en el cdigo
Comentarios (cont.)
Evolucionan con el cdigo
No deberian ser demasiados
Simples y fciles de actualizar
cc2e/3252
Excepciones
No son un sistema de mensajeria
Excepciones funcionales
Violaciones a reglas de negocio
Posibilidad de reintente
Excepciones tcnicas
Blue screens
Deben registrarse
Son ajenas a la aplicacin
Los sospechosos de siempre
Clases sin mtodos
Clases con muchos mtodos
pblicos
Clases aisladas
Warnings del compilador
Una pequea ayuditade mis amigos
Verificadores de cdigo
Style Cop, Check-Style, FxCop
IDEs
Eclipse, Visual Studio
Revisiones por pares
Programmers needs to think,
communicate and learn, that
is part of being professional
Kent Beck
You can't get always
what you want
The Rolling Stones, 1968
Referencias Code Complete, Steve McConnel
(obligatorio, clsico, nivel
inicial)
Implementation Patterns, Kent Beck
(nivel intermedio)
Refactoring, Kent Beck (nivel
intermedio, clsico)
Foundations of programming, Karl
Seguin (nivel avanzado)
Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21Pgina 22Pgina 23Pgina 24