FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Creando rutinas para programar mejor
Ley hace un par de meses, en una de las revistas de programación que tengo, sobre sistemas y métodos para programar mejor y después de este tiempo he de decir que tenían toda la razón, daban una serie de consejos, de los cuales unos eran aplicables a mi manera de trabajar y otros no, por lo que os comento, por encima lo que me he acostumbrado a hacer, a la hora de programar.
Uno de los primeros pasos, es que utilizáramos, un esqueleto base para nuestros Forms, por lo que cree el mi AutoABM, este sistema nos permite primero ahorrarnos horas de programación al tener creado la estructura principal del programa, y en segundo lugar, dar una imagen homogénea de los form. Realmente el tema del form de uso Estándar, es el que más tiempo nos ahorra, luego el resto, es mas pequeños tiempo de ahorro, entre ellos van los siguientes, son pequeñas chorradas que fun cionan muy bien, os pongo una pequeña lista -Nombre del Form y de la unidad el mismo, añadiendo delante F para Fom y U para la unidad -Espacio vertical entre componentes igual (yo lo he dejado en tres, si tienes CNPACK seleccionas los componentes y pulsas el botón para colocar igualado verticalmente con el interrogante, te pregunta "Please Enter the Space", ami por defecto me sale 4, lo cambio por 3 y listo. -DbEdits con bevelKind (bkSoft) y BevelOuter(Bvnone) y ecolor Entrada en clMoneyGreen y Salida clWhite, La verdad es que le da un Aspecto diferente, ademas por cada 10 caracteres el espacio en el With le doy 65, con lo que no nos queda unos edits larguísimos que nunca vamos a rellenar del todo. -En los IBDataSet y en los IbQuerry (son los que suelo usar) pulso en el Fields Edytor y añado los Campos, pulso sobre cada uno de ellos y cambio el texto del display label por lo que quiero que aparezca en mi caso, esto nos ahorra a la hora de arrastrar al form (con el Datasorce ya vinculado) el label del Campo con el texto que queremos y Dbgrid también, no suelo usarlo pero cuando puede ser necesario también el Editmask del Fields Edytor. -Tamaños Estándar de botones en mi caso Spedd butons (son de 70x70 para img. 48x48 y de 105x105 para img de 100), los Buttons suelo usarlos según el espacio necesario. -En el Código Cabecera identificativa de Cada procedimiento, función o Identificación de procesos más complicados y usar anotaciones de aclaración. -Usar un archivo Pas con todas las funciones a usar, para tenerlas controladas. -Procurar usar el mismo tipo de Form, aux. para las diversas partes del Código (form Logín, petición de datos, Mensajes de aviso, Etc). Se que tengo más rutinas pero no recuerdo ahora mismo, ya que más o menos escribo de memoria y de mis apuntes, me quedan por acostumbrarme e implementar el añadir en cada modulo la Estructura de creación de las tablas, creación modular de la aplicación (estoy empezando a estudiarlo) y auto crear por código la base de datos y las tablas filtros y demás de Firebird, para que el programa pueda regenerar de cero en caso de aplicación multi Empresa (ni idea) ,tablas con Campos Estándar (nombre, Tipo, Ancho) para usar el mismo código, en estos campos y por último aprovechar el manejo de Campos res para tener las imágenes de botones ya establecidas en estos y no en el código, Cargando estas en el Create De cada Form, con el subsiguiente ahorro de espacio y memoria. más o menos por aquí van mis tiros, el problema es implementarlo todo, acostumbrarse a ello, realmente nuestros form son dispersa por lo menos en mi caso así era) y la verdad que voy añadiendo los metodos y se nota en los cambios, tanto en tiempo como en rendimiento y visualmente. Ahora me pregunto que rutinas y metodos para programar usas tú?.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#2
|
||||
|
||||
Hola.
Aparte de tener en cuenta la mayoría de las opciones que comentas una cosa que intento hacer es declarar las variables con un nombre que empiece por el tipo de variable que es, por ejemplo:
cosa que me salto muchas veces pero lo intento, lo intento. |
#3
|
||||
|
||||
Todas esos detalles y muchos más los tengo en cuenta desde... 1985
Los que corresponden a programación gráfica (no existía antes para mí) desde 1998.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
¿Y no nos ilustras?
|
#6
|
||||
|
||||
Pues bueno, nada que no se encuentre en los libros
Básicamente es tener siempre unas normas comunes a cumplir entre todos los programadores, desde la nomenclatura a usar hasta los iconos, las herramientas, cosas a hacer, no olvidar, etc. Todos los forms heredan de una plantillaform, todos los forms de mantenimientos de tablas heredan de un form "plantillatablas" que a su vez hereda de plantillaform. Todas las funciones comunes están en un uutiles.pas, todas las de bases de datos en uutilesbd.pas, todas las de gráficas en uutilesgraficas.pas, etc. Siempre usar los datamodule para cada sección del programa, ejemplo: dmmain, dmmasientos, dmexportaciones, dminformes, etc. Al usar siempre un form plantilla y usar siempre los iconos disponibles y unas normas para la presentación, entonces queda todo bastante homogéneo. La nomenclatura está descrita para todo, variables, componentes, procedimientos, triggers, tablas, etc. por lo que muchas veces es difícil distinguir quién ha escrito un código, salvo pequeños detalles como la forma de escribir los comentarios, la posición de los "begin", etc. Para las variables uso una "versión propia" de la notación húngara de Charles Simonyi, que siempre ha sido el programador más admirado por mí, aunque trabajara para microsoft Antes de cualquier proyecto "me rodeo" de las herramientas necesarias, control de versiones, backups, "to-do", utilidades, etc. y previamente documento todo mediante un análisis bastante completo del proyecto a realizar. Evidentemente mis jefes ponen el grito en el cielo porque piensan que todo eso es perder el tiempo, incluso me dijeron una vez que hacer un análisis previo no sirve para nada, que no existe la profesión de analista , me quedé "planchao".
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 22-06-2011 a las 19:56:22. |
#7
|
||||
|
||||
Cita:
Un buen ejemplo lo teneis en esta serie de artículos, basados en un curso de Ian Martins. ( corrígeme si me equivoco, por favor ). Espero que sea de utilidad. El resto de las directrices indicadas por José Luis son absolutamente recomendables. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#8
|
||||
|
||||
interesantes comentarios, el mayor problema de ser autididacta es que realmente somos vampiros asorbiendo información, pero sin un correcto sistema de control
fjcg02, me interesa esos articulos podrias poner el enlace.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#9
|
||||
|
||||
Muy buenos consejos. Muchas gracias por compartirlos José!
Pero tengo que discrepar en lo siguiente: Cita:
Saludos, Chris |
#10
|
||||
|
||||
Busca el término herencia visual, es algo que no hay que pasar por alto cuando se programa en Delphi.
No suelo emplear prefijos en los nombres de las variables de una aplicación, pero sí en los nombres de componentes y otros elementos que representan objetos: Cita:
Y mis abreviaciones (aunque algunos autores un poco desorientados desaconsejan usar abreviaciones) son las siguientes: Cita:
Saludos. Al González. |
#11
|
||||
|
||||
Cita:
// Saludos |
#12
|
||||
|
||||
Hace tiempo, en alguna página de Microsoft sobre .NET, leí la recomendación de evitar el uso de abreviaciones en aras de darle claridad al código. Pero considero que esto podría ser contraproducente si ni siquiera se acepta un pequeña lista de excepciones como la que expuse al final del mensaje anterior, la cual, dicho sea de paso, contiene muchas de las abreviaciones que Borland y miles de programadores hemos usado con fines de practicidad y sin restar un ápice de claridad o legibilidad al código.
No encuentro muy recomendable ver identificadores como "SynchronizeStringParameters" dentro de un nutrido párrafo de código lleno de nombres similares, mientras que "SyncStrParams" aligera el esfuerzo neuronal. Tal vez de forma aislada no se note mucho la diferencia, pero una vez inmersos en la realidad (una nutrida rutina de código) se aprecia de mejor forma. Saludos. Al. |
#13
|
||||
|
||||
Bueno, pero eso no los hace desorientados. Es simplemente otra forma de ver las cosas. Yo trato de utilizar identificadores completos pues, contrario a tu visión, me produce menos esfuerzo neuronal a la hora de leer el código, sobre todo si el codigo no es mío. Además, la era del 8.3 terminó hace muchos años .
Pero estoy de acuerdo en que pueden hacerse excepciones, conforme uno lo crea conveniete. A fin de cuentas, lo impórtante es que uno trabaje en la forma que le sea cómoda y productiva, adoptando las técnicas que le parezcan mejores. // Saludos |
#14
|
||||
|
||||
Gracias por las recomendaciones voy apuntando, en las abreviaturas, suelo usar el siguiente sistema, por ejemplo nivel de usuario sería VarNivelUsuario, he de decir que me gusto la propuesta de Newtron y la AI Gonzáles y creo que voy a usar el siguiente sistema
indica variable, Tipo, Nombre abreviado de tres en tres, la misma variable de antes quedaría VarSNivUsu (Var-S-Niv-Usu) En cuanto al tema de separa las funciones en varios archivos pas, la verdad es que se vuelve complicado según va creciendo
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#15
|
||||
|
||||
Cita:
De verdad, un sistema estricto de abreviaciones por cantidad de letras no es una buena idea. Por el contrario, sería inhumano. |
#16
|
||||
|
||||
Y que lo digas
Hay que buscar un término "intermedio", usar un lenguaje "humano", pero sin pasarse function ExtraerElMayorNumeroParDeUnaCifraPasadaEnFormatoTexto(sNumeroComoTexto:string):string; function ExElMaNuPaDeUnCiPaEnFoTe(sNuCoTe:string):string;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#17
|
||||
|
||||
Cita:
Así es Casi, ni tanto que queme al santo... |
#18
|
||||
|
||||
Cita:
http://www.sjover.com/delphi/2009/09...los-mayores-1/ Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#19
|
||||
|
||||
Muchas gracias fjcg02.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#20
|
|||
|
|||
Para los que no lo conocen, acá les dejo un sitio que encontre en mis comienzos con delphi hace mucho tiempo. Fue escrita por Xavier Pacheco and Steve Teixeira en 1998.
Tiene un monton de recomendaciones que ellos llaman Estandares de Código. Está en inglés pero vale la pena que la tengan a mano para estudiarla y poner en practica muchos de las cosas que dicen. http://www.econos.de/delphi/cs.html Yo he puesto en práctica mucho de los que dice. Igualmente me gustaría comentar algunas de las cosas que yo hago. Para las variables las comienzo con tres letras minúsculas que indican el tipo de la misma. Por ejemplo una variable de tipo String sería strXxxxx, una de tipo Integer sería intXxxxx. A las qe son de tipo objetos las comienzo con obj. Lo mismo hago con los nombres de los formularios (frm), datamodules (dm) y componentes. Aunque en aulgunos casos solo utilizo dos letras. Si les sirve de algo el CnPack tiene una opción llamada Prefix Wizard que contiene una extensa lista de prefijos que se los agrega automáticamente cuando se carga un componente nuevo al formulario o datamodule. Estos prefijos se pueden cambiar si uno quiere. ---------- Para los formularios siempre tengo creados los formularios base para cada tipo de pantalla y heredo de ellos. ---------- Para las constantes me he acostumbrado a ponerlas siempre en mayúsculas para identificarlas de las variables. Tambien en estas para los mensajes al usuario trato de identificar que tipo de mensaje es. Por ejemplo: Si son errores uso ERROR_xxxxx, si son advertencias uso ADVERTENCIA_xxxxx, si son mensajes simples MENSAJE_xxxx, o si son de informacion INFORMACION_xxxxx ---------- Cuando en un formulario tengo un componente TLabel y uno TEdit que tienen relación los dos tienen el mismo nombre pero lo que cambia son las tres primeras letras que los identifican. ---------- Generalmente a las funciones/procedimientos para obtener datos (no importa de donde) los identifico con el prefijo Get y los de guardar con el prefijo Set. Esto viene de el Getter y Setter de la propiedades. ---------- Los mensajes, títulos, caption, ect que puedan llagar a cambiar de idioma en algun momento los pongo en constantes y los uso de ese lugar. Si solo son para un formulario en particular van directamente al comienzo de la parte de implementación y sino los pongo en una unit generica para el proyecto. ---------- Para las variables que uso en ciclos como FOR me acostumbre a usar y esto viene de largo cosas como una sola letra (Ejemplo: FOR i := 0 to 10). Si uso otra cosa es en casos especiales. ---------- Otra cosa que me acostumbre a hacer es setear todas las propiedades de los componentes que quiero distintas a las default por código. Esto lo empece a hacer porque en proyectos donde son varios lo que trabajan, siempre me las cambiaban desde el inspector de objetos. ---------- También y para finalizar por el momento, me acostumbre a ser muy prolijo con el armado de los formularios. Trato de que los componentes tengan el tamaño justo de los datos que se ingresan, que esten bien alineados, que el espacio entre ellos sea el mismo en todos (aunque puede que alguno este mas separado para identificar que no pertenece al grupo anterior). Tampoco hay que olvidar que hay que tabular bien los componentes en los formularios, en mi caso los tabulo de izquierda a derecha y de arriba hacia abajo (esto es en el sentido que todos leemos). El orden en que aparecen los datos en los formularios debe ser estudiado con cuidado. Por algo hay un orden en los formulario de papel que todos solemos llenar, alguien se todo el trabajo de ver como quedan mejor los datos para hacernos mas facil la lectura y llenado de los mismos. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Elegir el mejor SO para programar y Otros | Deiv | Varios | 41 | 21-07-2007 07:54:03 |
rutinas para manejo de figuras tridimensionales | afrodita | Gráficos | 1 | 25-04-2006 10:46:46 |
problema creando una base de datos para varios usuarios | ercrizeporta | Conexión con bases de datos | 3 | 07-07-2005 00:29:35 |
Mejor forma de programar con bases de datos | PTW | Conexión con bases de datos | 3 | 23-03-2005 15:20:17 |
rutinas para interaccion con codigo de barras | edupomar | Impresión | 2 | 25-09-2003 02:34:44 |
|