miércoles, 12 de noviembre de 2014

Object Pascal Style Guide

Antes de empezar a con los posts de programación vamos a establecer unos estilos de trabajo.

Aunque cada uno puede usar los estilos que quiera para programar, yo voy a intentar seguir los estilos indicados en Object Pascal Style Guide, con alguna adición o modificación, a continuación presento un esbozo.

Atención: Aunque en este documento los nombres los pongo en castellano (MiVariable, MiCampo,...), en los desarrollo generalmente usaré el inglés (MyVariable, MyField,...), se ha dejado este documento en castellano para su mejor comprensión. 

Convenciones de nomenclatura

A excepción de las palabras reservadas y directivas, que están en minúsculas, todos los identificadores Pascal deben usar UpperCamelCase, lo que significa que la primera letra debe ser mayúscula, y las palabras incrustadas en un identificador debe ser en mayúsculas, así como cualquier sigla que está incrustada. Además no se debe usar el carácter de subrayado o guión bajo  "_" para unir palabras.

// Mal formadas
patata
miVariable
Lanzar_Actualizacion
MiClaseFtp

// Bien formadas
Patata
MiVariable
LanzarActualizacion
MiClaseFTP

Tipos

Cualquier definición de tipo (excepto Interfaces) siempre comenzará con la letra T y a continuación el nombre.

type
  TMiTipo = class(TObject)...

Interfaces

Los interfaces comenzarán con la letra I y a continuación el nombre.

  IMiBuenPastor = interface 
  ...

En algunos casos he comenzando con la palabra Interface aunque ya no lo estoy utilizando mucho

  InterfaceMiBuenPastor = interface 
  ...

Tipos enumerados

En este caso, los componentes del tipo utilizarán la notación húngara (más o menos)

type
  TFormatoCuadrado = (fcNormal, fcRedondeado, fcEstrellado);

Dónde fc significa formato de cuadrado.

Clases

Los nombres de las clases siguen la nomenclatura de los tipos (TMiClase)

Campos

Los campos de las clases comenzarán por la F y el nombre del campo y generalmente irá en la sección privada. En general deben ser sustantivos. Para hacer uso publico de estos campos usaremos las propiedades o  setters y getters

  FMyCampo: string;

Métodos

Los nombres de los métodos deben ser verbos o frases imperativas.

  LanzarRestauracion
  Cargar
  Salvar
  AgregaBoton

Propiedades

Generalmente las propiedades accederán directamente a los campos o a través de getters y setters

  property MiCampo: string read FMiCampo write FMiCampo;
  property MiCampo: string read GetMiCampo write SetMiCampo;
  property MiCampo: string read FMiCampo write SetMiCampo;


Variables locales

Las variables locales nunca deben empezar por la letra F para diferenciarlas de los campos. Deben ser en general sustantivos o nombres que no definan ninguna acción, para no confundirlas con los métodos o procedimientos.

Se permite el uso de variables de una sólo letra en minúscula para variables temporales y de bucle:

  for i := 0 to 9 do
    HacerAlgo;


Procedimientos y funciones

Igual que los métodos.

  procedure HacerAlgo;
  function CalculaAlgo: double;

Formateo de código

Mención especial tiene el formateo de código ya que como actualmente el mismo Delphi ya tiene un herramienta de formateo integrada, por lo que es recomendable usarla. Para versiones más antiguas se puede usar el DelForExp (podeis verlo en Delphi al Límite) o el JEDI Code Format


viernes, 7 de noviembre de 2014

Embarcadero y su política de versiones

Hace un año, en la empresa donde trabajo, pudimos adquirir el Delphi XE5, y aún estamos trabajando en pasar de Delphi 2007 al XE5, y a estas alturas ya han aparecido dos nuevas versiones de Delphi, XE6 y XE7.

A este paso cuando consiga olvidarme del Delphi 2007 (ya me costó hacerlo de mi querido Delphi5) y empezar a profundizar en el XE5 (que ya tengo ganas de programar para Android y IOS desde Delphi), ya estaremos con el XE12 o vayas tú a saber...

Las compañías que desarrollan componentes para Delphi, que para mí son muy importantes porque te dan un valor añadido muy interesante, cada vez que se saca una nueva versión de Delphi tienen que, como mínimo, recompilar todos sus componentes para que sean compatibles con la nueva versión, amén de que no tengan que realizar algún cambio adicional.

Para nosotros que los trabajamos como desarrolladores, ya sea en una empresa que fabrique pañuelos o una empresa que realice complejos programas de análisis científico, la actualización de una versión a otra siempre llega a ser un dolor de cabeza (cambia todos los componentes de terceros que uses y ten por seguro te va a costar más dinero y después adecua todos tus proyectos al nuevo sistema y más si usas bpl que no son compatibles entre versiones!!). Y sobre todo cuando la dirección de la empresa o incluso del departamento de informática/sistemas, nunca tiene previsto hacer una actualización y tienes que convencerles de que ya es hora de hacerlo, ¡imagina si tienes que hacerlo cada año  y no digamos si hay más de una!.

Esta claro que pasar de una versión a la siguiente siempre es más sencillo que saltarse dos o tres, y todos estaríamos mejor preparados si actualizáramos siempre que saliera una nueva versión, pero tal como está la situación económico, no creo que las pequeñas y medianas empresas puedan permitirse el lujo de esta actualizaciones.

No hace mucho, Danysoft abrió un nuevo sistema de actualizaciones llamado Plan de recarga con el que puedes ahorrar un 50% del precio de la actualización, puede ser una alternativa razonable, pero hay que tener en cuenta dos cosas: primero convence a tu dirección para que se acoja a este plan, que conlleva al menos una actualización al año (y este año han habido dos) y segunda ten previsto que el cambio también te supondrá actualizar tus componentes de terceros y en menor medida algo de tu código.

Todos sabemos que el mundo tecnológico va a mil por hora y está claro que la mejor forma de ser competitivos es poder utilizar cuanto antes las nuevas tecnologías, ¿Embarcadero con su política de versiones intenta que estemos siembre de la mano de estas tecnologías ó lo que simplemente quiere es tenernos amarrados como fuente continua de ingresos?

Como he comentado antes ahora mismo trabajo con la XE5 (y 2007), y he estado en las presentaciones de las nuevas versiones de XE6 y XE7  y creo que los cambio con respecto la versión XE5 no son tan relevantes como para hacer dos versiones en el mismo año.

Personalmente creo que es importantes estar actualizado para acceder a las nuevas tecnologías que van apareciendo, y para ello debemos confiar que Embarcadero las integre progresivamente, pero creo que con una actualización al año sería suficiente. Aún con sólo una actualización al año, tal como está la situación económica creo que muchas pymes no podrán soportar este gasto de tiempo y dinero. Cómo último y referente a la situación económica, si alguien me dice "No tienes que preocuparte porque lo paga la empresa y no es problema tuyo", yo contesto  "¿Cuantos de nosotros estamos pendientes de si vamos a cobrar este mes?, cómo para no preocuparse, yo formo parte de la empresa".


PD: Como curiosidad el  roadmap de 2014 que nos informa de las nuevas tecnologías desarrolladas (y por desarrollar) y lo que se tiene previsto para el año que viene, aunque no parece indicar nada de Linux..


jueves, 6 de noviembre de 2014

Iniciamos el trayecto...

Al fin me he decidido a crear mi primer blog, y como no un blog de programación, centrándome en el lenguaje que más he usado y uso actualmente: Delphi.

Realizaré ejemplos prácticos para el uso de Delphi en desarrollo empresariales y mostrar el potencial que puede llegar a tener.

Compartiré experiencias que me surgan en mi día a día laboral, ya que como a mí, a cualquier desarrollador le pueden surgir los mismos problemas.

¡ Yo ya estoy listo paara empezar esta aventura !