Antes de hacer perder el tiempo a nadie leyendo esto, aviso de que es una paranoia bastante seria que me entró hace un par de días en la clase de Estructuras de Datos y Algoritmos. Lo aviso: es un apaño de lo más rebuscado, ineficiente e inútil para esquivar (ni siquiera solucionar) el problema que se encuentran los programadores que aún trabajan con compiladores a 16 bits (posiblemente sólo los nostálgicos de Clipper excesivamente reacios a evolucionar).
El tema es el siguiente: una de las limitaciones de usar Clipper es que los nombres que das a las funciones que escribes no pueden tener más de diez caracteres, por lo que, por ejemplo, funciones como GuardarDatos() y GuardarData() serían consideradas la misma, y nos veríamos obligados a cambiar de nombre a una de las dos. Seguramente no estoy hábil buscando ejemplos, y en este caso la solución pasaría por algo tan sencillo como acotar el verbo Guardar y pasarlo a Guard, o bien sustituirlo directamente por Save. El problema pienso que puede surgir cuando nombramos a las funciones siguiendo patrones que identifican su lugar en la jerarquía del programa. Es algo que yo a veces hago. Si el nivel al que queremos acceder está varias ramas por debajo del nivel raíz, podríamos tener un problema al sobrepasar los diez caracteres:
LibrosImprFicha()Bueno, pues la absurda solución que se me ocurrió el otro día fue servirnos de la Programación Orientada a Objetos para conseguir alargar los nombres. La idea consiste en crear clases sin atributos, cuyos métodos pasen a ser las funciones que queremos estirar:
LibrosImprListado()
CLASS TLibrosDe esta forma, las llamadas a las funciones constarán de dos partes: la variable objeto y el nombre del método. Conseguimos así recortar el primer nivel, reservando los diez caracteres para el nombre del método:
···method New() constructor
···method Gestion()
···method Nuevo()
···method Editar()
···method Buscar()
···method ImprFicha()
···method ImprListado()
···method Salir()
ENDCLASS
Libros:ImprFicha()Ahora el compilador entendería estas dos llamadas como funciones distintas. Vamos, que es el mismo perro con otro collar (o la misma mierda con otro nombre).
Libros:ImprListado()
comentarios (11) |
Paja mental del tamaño de una casa :D
Por suerte yo nunca me he topado con un compilador tan antiguo *toco madera*
Bueno, en php se utiliza eso para hacer suerte de namespaces, llamando a los métodos de forma estática. Claro, en php5 tiene su utilidad, porque existen las propiedades de clase, pero en el 4 sirve precisamente para lo que tu dices... no es tan rebuscado, después de todo.
Y, ¿estás seguro de que los compiladores Clipper para 16 bits admiten POO?
Hermann,
Me ha gustado lo de la paja mental. Creo que no lo habría definido mejor :P
Claudex,
De verdad que no imaginaba que esta idea pudiera ser útil en algún ámbito... me dejas de piedra.
Cek,
La versión 5.3 de Clipper (no sé si desde la 5.0) incluía varias clases tales como controles GET (para capturar datos por teclado). A pesar de ser un lenguaje imperativo, en sus últimas versiones pasó a ser algo mixto con POO. En cualquier caso, mi costumbre es que cuando hablo de Clipper lo relaciono con Fivewin, la librería gráfica para aplicaciones bajo Windows, que, cómo no, aporta un motor de objetos, y que es el que siempre he usado. Por eso doy por hecho que lo tienen :) Y si no lo tienen, a buscarse otra solución ;)
Interesante, pero ¿la versión 5.3 de Clipper funciona en 16 bits o en 32? :)
Cek,
En 16. Nunca hubo Clipper a 32 ;)
El actual Clipper es xHarbour (proyecto opensource derivado de Harbour). Además de estos está C3, pero en mi opinión el verdadero sucesor es xHarbour. Por cierto que para que no se diga que el xbase está desfasado, Harbour ya ha sido probado con éxito a 64 bits, ahí es nada.
Pues muchas gracias por la info ;)
En realidad, no se puede acceder al motor de objetos de Clipper, porque no es público.
Pero tranquilamente puedes utilizar librerías de terceros, y hasta la mismisima Object de Feivewin, que en su tiempo tambien era utilizada en FiveDOS.
Salu2
PD: Jaime, fijate que si te olvidas de poner algun datos en los comentario y le das "enviar", te borra todo lo que escribiste, un bajón :(
Daniel,
Gracias por el aviso, lo que ocurre es que no sé cómo solucionarlo :( Ya me había dado cuenta de que ocurría eso, pero al funcionar la gestión de contenidos bajo Movable Type, todo el tema de validaciones está en PERL y CGI...
Es más sencillo hacerlo con un simple #translate y además se puede hacer para que sólo opere con Clipper que es el que tiene la limitación
Ignacio,
Ya avisé de que no llegaba ni a los límites de "solución aceptable", simplemente se me ocurrió y me dió por contarlo :)