Otro libro más y una reflexión sobre objetos
Acabo de recibir otro libro de Amazon.com (Cómo me gustaría que hubiese un Amazon.es. Hace unos años corrió el rumor de que así iba a ser, y fui tan tonto como para hacerme ilusiones. Por desgracia, no era cierto. Aparentemente los informadores no comprende que hay una diferencia entre registrar un dominio y querer hacer algo con ese dominio). Se trata de Pattern Hatching. Design Patterns Applied de John Vlissides, uno de los miembros de la famosa Banda de los Cuatro (autores de Design Patterns un libro extraordinario). No he tenido tiempo más que de echarle un vistazo rápido, pero parece muy interesante.
Mientras tanto, yo sigo con Refactoring. Está francamente bien, sobre todo porque va desgranando formas concretas de hacer refactoring, y, sobre todo, cuándo no hacerlo, en una especie de catálogo con instrucciones concretas (tanto en código como en diagramas de clases). Algunas de las soluciones que ofrece son triviales para cualquiera que haya programado un poco con objetos, aunque supongo que son triviales en el sentido de que toda ciencia es trivial, es decir, lo es una vez que alguien lo dice por primera vez (o debería serlo, ésa es la naturaleza del conocimiento científico). Otras de las soluciones me resultan muy interesantes y me han hecho reflexionar sobre la ventaja de programar con objetos.
Es decir, intuitivamente sé por qué me gusta hacerlo así. Simplemente programar con objetos me deja una sensación de claridad intelectual que no tenía cuando programaba en C (o Fortran, o Pascal, o ?Dios, lo que tenía que hacer uno en física- ensamblador). Si está bien hecho ?y supongo que eso es lo difícil- parece más correcto.
Pero hay personas que opinan que la POO es fundamentalmente errónea porque no se deberían mezclar datos con las funciones para manipularlos. Opinan que son dos cosas completamente diferentes. Yo no creo que sea así. Simplemente porque opino que los datos carecen de interés. Me explico. A uno rara vez le interesan los datos en sí mismo. Una secuencia cualesquiera de números, tal como: 4, 9, 16, 25, 36… no dice nada. ¿Qué son esos números? ¿Temperaturas? ¿Euros? Saber qué miden esos números nos ayudaría más. Pero saber que son el resultado de aplicar la fórmula y=x2 es mucho más interesante (supongo que aquí se nota mucho que estudié física, que tengo cierto aprecio por las fórmulas por encima de la realidad). Realmente no nos interesan los datos sino la información que podemos extraer de esos datos. Y la información no es más que procesar datos para obtener algo que realmente nos sea útil.
Racionalmente, yo lo veo así: la programación orientada a objetos nos permite olvidarnos de los datos y de su manipulación, eso ya se habrá definido en su momento, y nos permite concentrarnos en convertirlo todo ese conjunto en información, que realmente es lo que queremos. Si tengo una clase Empleado
no quiero tener que preocuparme de qué tipo de empleado es para calcular su sueldo con sus posibles bonificaciones y demás zarandajas, esa decisión se tomará en función de ciertos datos que realmente no me interesan. Lo que realmente quiero es tener un método getSueldo()
que me dé la información que quiero realizando los cálculos que sean oportunos sin que yo tenga que conocerlos. Ya le daré los datos, lo cual es molesto, pero que luego no me incordie más de lo debido.
Para mí, ése es uno de los grandes beneficios. Llegado a cierto nivel, y si todo se ha construido bien, me permite olvidarme de lo que no interesa y concentrarme en lo que realmente deseo. O al menos, así lo veo yo.
—–