Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Bibliotecas de código fuente > [GH Freebrary]
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Introducción a GH Freebrary

Generalidades y licencia

GH Freebrary es una biblioteca de programación Delphi de propósito general, disponible con todo su código fuente y libre de ser utilizada en cualquier proyecto y de ser adaptada a cualquier otro lenguaje, ya que su tipo de licencia es uno de los más permisivos: BSD. Hubiera sido incongruente darle a este trabajo, hecho bajo un entorno de programación actualmente no libre (Delphi), una licencia restrictiva que solamente permitiera su uso en la construcción de software libre. La licencia BSD parece ser idónea, por ser una de las que más libertades otorga al usuario de un producto sin desconocer la autoría original del mismo.

Si alguna persona u organización emplea GH Freebrary para crear software libre, estupendo. Si utiliza esta biblioteca para crear software privativo, no hay problema. Si con ella alguien crea un producto con el cual consigue importantes ganancias, y no tiene la urbanidad de hacer un donativo a los autores de la biblioteca, tampoco habrá problema.

Objetivo

El objetivo de GH Freebrary es ayudar a crear más y mejores soluciones de software, en menor tiempo, a menor costo y con menos esfuerzo. Para alcanzarlo es muy importante el apoyo de la Comunidad.

Premisas

Esta biblioteca fue construida bajo las siguientes proposiciones o premisas, las cuales no están exentas de controversia o posible revisión:
  1. Conforme se construye software, debería ser cada vez menor la cantidad de recursos (tiempo, dinero, esfuerzo) destinados a escribir código para necesidades comunes o ya experimentadas, de tal suerte que los recursos deberían enfocarse cada vez más a necesidades nuevas y particulares de los proyectos y tecnologías que van surgiendo.
  2. Al menos el 50% del código escrito para desarrollar una aplicación de software debería quedar asentado en bibliotecas de programación que puedan usarse después para crear más aplicaciones.
  3. Los bloques de código comunes, es decir, que se repiten, deberían reducirse a sentencias fáciles de leer, abstrayendo los detalles mediante la colocación de éstos en el interior de rutinas (funciones o métodos).
  4. En un buen compilador no hay límite de rutinas que pueden llamarse en cadena unas a otras, y la repercusión de esto en la eficiencia de ejecución es rara vez significativa.
  5. Hay muy pocas razones válidas por las cuales una rutina deba tener más de 20 líneas de código fuente (esto no quiere decir que todas las de 21 o más estén mal). El aprovechamiento del código es, hasta cierto punto, directamente proporcional a la descomposición de rutinas grandes en rutinas más pequeñas.
  6. Ninguna clase debería esconder parte de sí a las clases que descienden de ella; toda clase debería poder acceder a cualquiera de los elementos que la componen (incluyendo los que le heredan clases ascendentes).
  7. Marcar una clase como sellada para que no pueda derivarse de ella o un método virtual como final para que no pueda redefinirse una vez más, no parecen ser una buena idea.
  8. Cada biblioteca de programación, incluso las nativas de un lenguaje o entorno de desarrollo, debería emplear algún tipo de prefijo en sus identificadores para evitar conflictos de nombres o posibles ambigüedades.
  9. CamelCase es el más bello estilo de escritura de palabras compuestas en programación, pero las siglas deberían permanecer en mayúsculas aun cuando formen parte de un identificador de programa (vtANSIString y no vtAnsiString).
  10. Al programar software debería evitarse en lo posible el uso del guion bajo ("_"), salvo en casos muy especiales.
NOTA: La actual versión de GH Freebrary no atiende impecablemente a las premisas anteriores, pero se orienta a conseguirlo.

Descarga

Esta es la dirección de Internet para su descarga: http://terawiki.clubdelphi.com/Delph...H_Freebrary__/. Se trata de la carpeta pública del proyecto, en la cual pueden encontrarse las más recientes versiones, algunos programas de ejemplo y otro material.

Organización

Como muchas bibliotecas, GH Freebrary se compone de constantes, tipos, clases, procedimientos, funciones y variables contenidos en archivos .pas, formalmente conocidos como unidades. El nombre de todas las unidades comienza con las letras GHF. Casi todas las clases se encuentran en unidades exclusivas, es decir, archivos .pas creados con el propósito de contener de forma aislada el código fuente de una sola clase, siendo pocos los casos de unidades que, por razones especiales, contienen más de una. Las rutinas que no pertenecen a una clase, conocidas como funciones sueltas, se encuentran en su gran mayoría dentro de las unidades GHFRTL, GHFVCL y GHFUtils.

GHFRTL es la única unidad que no depende de ninguna otra de GH Freebrary, es decir, en sus cláusulas Uses solamente hay referencias a unidades nativas y, más concretamente, sólo unidades nativas que se consideran parte de la RTL (Run Time Library). A este respecto, la forma de averiguar si una unidad nativa pertenece o no a la RTL es verificando su existencia en el directorio Source\RTL de Delphi (incluyendo subdirectorios). GHFRTL contiene la mayor parte de las constantes, tipos, funciones sueltas y variables globales de la biblioteca, es el núcleo de la misma y no declara ninguna clase pública.

GHFVCL también contiene o puede contener constantes, tipos, funciones sueltas y variables globales, pero sólo cuando esos elementos dependan o tengan relación con unidades nativas que se consideran parte de la VCL (Visual Component Library) o, por extensión, que no pertenezcan a la RTL. En sus cláusulas Uses la única unidad no nativa que aparece es GHFRTL (GHFVCL depende de GHFRTL). No declara ninguna clase pública.

GHFUtils fue creada para contener constantes, tipos, funciones sueltas y variables globales que dependen de elementos de GH Freebrary no contenidos en las unidades GHFRTL y GHFVCL (por lo regular clases TghXXX). Esta unidad no declara ninguna clase pública.

En su gran mayoría el resto de las unidades contienen clases, generalmente sólo una y nada más (GHFClientDataSet contiene a la clase TghClientDataSet, GHFObjList contiene a la clase TghObjList, GHFOpenXMLSpreadsheet contiene a las clases TghOpenXMLSpreadsheet y TghOpenXMLSpreadsheetBook, y así).

Por último, hay unidades que son creadas para contener constantes, tipos, funciones sueltas y variables globales de ámbito especial, concerniente a un país o a un idioma. En la versión actual de GH Freebrary existe una unidad llamada GHFEN, para cuestiones relacionadas con el idioma inglés, otra de nombre GHFES, para cuestiones relacionadas con el idioma español, y una GHFMEX, para cuestiones relacionadas con México. Para los nombres de este tipo de unidades se optó por emplear los códigos ISO de países (en su sistema de tres letras) y los códigos ISO de idiomas (en su sistema de dos letras).

Última edición por Al González fecha: 23-03-2013 a las 05:00:07.
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Avanzando con GH Freebrary Al González [GH Freebrary] 13 23-03-2013 08:08:03
Nueva GH Freebrary (open source) "beta" Al González [GH Freebrary] 23 17-02-2013 02:20:40
Introduccion a OOP AzidRain OOP 0 14-08-2007 23:48:44
Introduccion a las DLL CARSOFT_AR Varios 4 19-09-2005 20:55:18


La franja horaria es GMT +2. Ahora son las 01:14:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi