I) Hay una gran diferencia entre el procedural code y OO code, y es que el procedural tiende a tomar informacion, y luego actua en base a dicha informacion, por otro lado, el 00 code tiende a decirle a los objetos que hagan cosas, es decir, se le envian comandos (mensajes), y el objeto realiza un comportamiento que corresponda, al mensaje enviado, de esta manera evitamos hacer acciones que dependan del objeto llamado, puesto que eso no nos interesa, lo que nos importa es mandar un mensaje, y que el objeto haga el comportamiento que corresponda.
¿Por que esta mal obtener el estado del objeto explicitamente, y actuar en base a ese estado?
Esta mal porque para nuestro paradigma OO, la logica que estamos implementando es responsabilidad del objeto llamado, no del objeto que hace la llamada. con lo cual estamos rompiedo el encapsulamiento del objeto llamado, pues, tomar decisiones fuera del objeto que las toma, ESTA MAAAAL. Se deja el codigo expuesto a todo el mundo (codigo abierto).
EJEMPLO DE COMO HACERLO INCORRECTO:
Supongamos que el chico del periódico viene a tu puerta, exigiendo el pago de la semana. Usted
se da la vuelta, y el chico de papel tira tu billetera fuera de tu bolsillo trasero, Toma los dos dólares, y devuelve la cartera. Tan absurdo como suena, muchos programas están escritos en este estilo,
que deja el código abierto a todo tipo de problemas (y explica por qué el chico del papel ahora conduce un Lexus).
EJEMPLO DE COMO HACERLO CORRECTO:
El chico del periodico pasa por cada puerta repartiendo los periodicos, cuando llega a una puerta, el chico debe decirle a la cliente para pagar los $2. 00. El código debe funcionar de la misma manera – nosotros debemos decirle a los objetos qué hacer, no Pregúntales por su estado.
II) Una forma ideal de pensar como programar correctamente siguiendo esta frase de Tell Don’t Ask es, pensado que cuando querramos saber algo de un objeto, debemos hacer una consulta que sólo le da información sobre el estado del objeto – y hace no modificar el estado exteriormente visible del objeto. Es decir, las consultas deben ser libre de efectos adversos como se observa en el fuera del mundo. Ahora, es posible que queramos para hacer algún precalculado o caché
entre bastidores, según sea necesario, pero obtener el valor de x no debe cambiar el valor de y.