5 principios bsicos de la programacin orientada a objetos, explicados en Agile Software Development: Principles, Patterns, and Practices por uno de los grandes exponentes de la artesana del software, el famoso Uncle Bob (Robert C. Martin).
Por qu SOLID?
SOLID
SRP OCP LSP Single responsibility principle Open/closed principle Liskov substitution principle
ISP
DIP
Debe tener una nica responsabilidad, ocuparse de una nica tarea. Aumentar de esa forma la cohesin y reducir el acoplamiento.
EJEMPLO
Tenemos una clase Pedido con dos mtodos: cargar y calcularCosto. Ambos mtodos se encargan de cosas relacionadas con los pedidos. La realidad es que la clase se encarga de tareas relacionadas con los pedidos y de tareas relacionadas con la base de datos.
Lo recomendable es Definimos reproducir como abstracto y movemos la implementacin a varias clases hijas. cuando queramos aadir un nuevo formato, slo necesitaremos crear una nueva clase hija.
https://gist.github.com/2896236#file_ocp_empleados.sin_refactorizar.cs
https://gist.github.com/2896236#file_ocp_empleados.refactorizado.cs
https://gist.github.com/2896064
https://gist.github.com/2896078
https://gist.github.com/2896112#file_lsp_animal.sin_refactorizar.cs
https://gist.github.com/2896112#file_lsp_animal.refactorizado.cs
Definicin
Ejemplo
Lo ideal
En lugar de una implementacin concreta, como era la clase para trabajar con archivos de texto plano.
https://gist.github.com/2896132#file_dip_hola_mundo.sin_refactoriza r.cs
https://gist.github.com/2896132#file_dip_hola_mundo.refactorizado. cs
Referencias
http://www.slideshare.net/jrhuerta/principios-solid-dediseo-orientado-a-objetos http://www.genbetadev.com/paradigmas-deprogramacion/solid-cinco-principios-basicos-de-diseno-declases http://mundogeek.net/archivos/2011/06/09/principiossolid-de-la-orientacion-a-objetos/ http://www.fjordan.es/solid-principios-basicos-de-disenode-clases.html http://elblogdelfrasco.blogspot.com/2012/03/solid-los-5principios-fundamentales-de.html http://en.wikipedia.org/wiki/SOLID_%28objectoriented_design%29