[Python-es] pregunta casi filosófica: ¿es mejor usar tipos básicos o mejor clases dedicadas?

Ricardo Cárdenes ricardo.cardenes en gmail.com
Sab Nov 24 23:11:55 CET 2012


2012/11/24 Javier Gutierrez <ukeitaro en yahoo.es>

> Hola Jose.****
> ** **
> Las preguntas que planteas es muy interesante y me voy a mojar.
>


> - Te quitas código de en medio, lo puedes poner en una esquina y usarlo
> sin que te estorbe.****
> - Tu código va a ser más fácil e probar.****
> - Llevándote código aparte y aislándolo te va a resultar más sencillo
> refactorizarlo.
>

Estos tres puntos en particular yo discutiría si son realmente beneficio
directo del (o incluso facilitado por) uso de objetos y patrones. Los
objetos y patrones son parte del juego de herramientas de "buenas
prácticas" del programador, pero hace falta experiencia y buen juicio para
saber dónde y cómo aplicarlos, que es parte de mi razonamiento. Hay otras
buenas prácticas que también te ayudan a conseguir lo de arriba...


> - Aumenta la reusabilidad, bien directamente bien mediante el uso de
> herencia.****
>

... siendo ésta, específicamente, una de las cosas que no necesariamente se
obtienen mediante el uso de objetos (la reusabilidad, digo). Cualquiera que
se haya mirado trabajos clásicos sobre el asunto (Construcción de Software
Orientado a Objetos, de Meyers, por ejemplo), sabe que hay varios aspecto
que inciden en la reusabilidad del código, dentro del propio paradigma de
orientación a objetos (eg. acoplamiento) y que uno tiene que calibrarlos
bien cuando hace su diseño. Y que a veces tienes que llegar a compromisos,
porque no existe la panacea y el diseño perfecto es un objetivo a
marcarse... pero que a menudo choca con la realidad.

Por supuesto, hay que valorar si todo lo anterior merece la pena, ya que,
> aunque suena muy bien, podríamos caer en el riesgo e utilizar
> sobreingeniería. En ese sentido, la respuesta que nos da Ricardo es muy
> interesante y merece la pena tener en cuenta sus motivos.****
>

Bingo

Otro asunto que no hemos tocado es que hay varias "escuelas" en lo que toca
a la implementación del modelo de objetos, en sí (vamos, cómo lo plasmas en
un lenguaje). No son lo mismo los objetos de Java y C++ que los de Go, que
los de Python (que, entre otras cosas, no incorpora una de las "patas" de
ciertas escuelas, la encapsulación como medio de restringir acceso a
miembros), que los de Smalltalk (que por cierto, me encantan). Es
aconsejable aprender los conceptos de la orientación a objetos y los
patrones como reglas generales e interiorizarlos como el "espíritu" que
debe guiar tu forma de programar, pero no la "letra", pues luego hay que
aplicarlo al lenguaje que tienes a mano, con las ventajas y desventajas que
te de.

Eg: ¿quién no ha echado de menos el duck typing al tener que irse a Java?

De todas maneras, no quiero meterme en fregados teológicos, porque se va de
madre el hilo y no es lo que preguntaba Jose.

Saludos,
Ricardo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121124/e65f9ef8/attachment.html>


Más información sobre la lista de distribución Python-es