Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: nanochess en 28 de Octubre de 2012, 02:41:52 pm



Título: Convenciones al programar
Publicado por: nanochess en 28 de Octubre de 2012, 02:41:52 pm
Hola. Hace poco en Atariage alguien preguntó sobre convenciones usadas al programar. Me pareció buena idea compartir mis convenciones, y si alguno de ustedes también tiene su "política" pues agregue un post.

Ahora sigue la traducción de mi post:

Tiendo a escribir juegos en lenguaje ensamblador ya que hallo los compiladores poco óptimos.

Hasta ahora mi norma es usar mayúsculas para las etiquetas que son constantes, minúsculas separadas por guión bajo para funciones, etiquetas locales usando sólo punto y número, y el código ensamblador en minúsculas (nota extra: en Zombie Near no me puse de acuerdo y parte del código está en mayúsculas ;D )

Funciones separadas, comentadas al inicio para indicar argumentos de entrada/salida y alguna información sobre su operación.

Algunos comentarios a la derecha para puntos importantes. Y por supuesto algunos comentarios sobre como trabaja la función o cual es la razón detrás de su implementación.

Además al inicio de cada módulo de código fuente me gusta poner fechas de revisión con comentarios de cambios (gran ayuda para detectar cuando se introdujeron bugs). Y cuando un módulo se vuelve demasiado grande o es independiente de la plataforma entonces lo separo en un archivo nombrado con claridad.

Por ejemplo en Princess Quest tengo un módulo central "nucleo.asm" usado por las versiones MSX "quest.asm" y Colecovision "questc.asm" en estos últimos puse el código dependiente de la plataforma.

Espero que a alguien le sirva de ayuda  ;)


Título: Re: Convenciones al programar
Publicado por: MsxKun en 28 de Octubre de 2012, 07:36:09 pm
Hombre... Yo soy muy anarquico para eso. Pero si hay varias cosas que hago siempre de la misma manera, porque me conviene, mas que nada...

Las variables las etiqueto como @VARIABLE@, generalmente en mayusculas, y la @ para que el editor me las pinte de azul.
Las llamadas a la BIOS las pongo como _LLAMADA_, y asi el editor me las pinta de verde.
Las rutinas propias las pongo tal que asi ~Rutina: De esta manera, con el ~, el editor me permite acceder a una lista de rutinas con tan solo pulsar F2, y saltar de una a otra facilmente.
Para etiquetas locales, como dices, hago lo del punto tambien, pero aunque a veces pongo solo un numero, suelo intentar que sean mas descriptivas.

Los comentarios ... pfff. Intento que me queden alineados a la derecha, tras las instrucciones, pero suele pasar que meto comentarios con mas o menos indentacion asi porque si. Al menos, el editor me los pinta de rojo y nunca hay problema para diferenciarlos. Intento poner la descripcion de la rutina al inicio, pero va muy segun lo perro que este ese dia. Ademas, suelo mezclar comentarios en castellano e ingles (catalan no mucho...). Asi, indiscriminadamente. Puedes encontrarte un comentario en castellano, y el de la linea de debajo, en ingles.

El codigo ensamblador tb generalmente en minusculas, aunque de tanto en tanto no xD Especialmente para los registros, a veces los mezclo. Algo asi como ld a,(IX+1)
Generalmente suelo poner los incbins con datos y tal al final, tras todo el codigo. Pero depende, en Megaroms, pues no porque depende de como me estructure cada pagina...
Tambien intento, como dices, tener el codigo separado en ficheros segun su funcion, pero cuantos ficheros y categorias tengo y que rutinas meto en cada depende de como me de. Especialmente para las rutinas de libreria, que suelen estar mas desperdigadas de lo que deberian :S En todo caso, me da mucho palo tener un fichero con mucho codigo pero tambien me da mucho palo tener muchos ficheros :D

Lo que si tengo siempre aparte es un par de ficheros con equs que incluyo en cada proyecto, uno con las llamadas a la BIOS y otro con las direcciones de VRAM.

Y este es todo el orden que me permito, el resto es todo caotico.

Yo no espero que lo dicho sea de ayuda a nadie, pero bueno, ahi queda...



Título: Re: Convenciones al programar
Publicado por: nanochess en 29 de Octubre de 2012, 12:23:53 am
No lo pensé, pero creo que tienes razón. El estilo puede depender del editor de texto ¿cuál usas?

Yo uso uno que probablemente ya nadie usa  ;D el viejo EDIT que viene con el CMD del Windows, como todo es blanco y azul, las mayúsculas se me distinguen más y se me facilita poner las cosas en columnas con la tecla TAB.

El que si considero terrible es el Notepad porque no me deja "navegar" por la pantalla para poner comentarios, además tengo la impresión de que me "cambia" la estructura.  :-\

También los comentarios y etiquetas están todos en español sólo porque es mi idioma nativo. Asì que puedo comprender el porqué de que uses catalán.  ;)


Título: Re: Convenciones al programar
Publicado por: MsxKun en 29 de Octubre de 2012, 10:59:32 am
Uso el Editplus2. Como otros, deja tener varios documentos a la vez para ir cambiando de uno a otro pulsando en la pestaña. Ademas lo tengo configurado para compilar con un solo boton, ejecutar ROM con un solo boton, etc..
No, el catalan es que apenas lo uso, pa na. Se me puede escapar algun palabro, eso si.


Título: Re: Convenciones al programar
Publicado por: kabish en 29 de Octubre de 2012, 02:56:52 pm
Yo a la hora de utilizar etiquetas, o incluso comentarios, los hago tanto en ingles como castellano como en spanglish. Cosas como 'JumpTotalContador' o 'MaloType01Salto'.
También tengo alguna rutina con comentarios como 'Esta rutina es una mierda, pero funciona' que esta en el TOGK.

Todo lo escribo en minúsculas, y algún comentario en mayúsculas para que resalte.

En otros lenguajes hay libros de estilo, pero para ensamblador no he visto nada de eso, la verdad.


Título: Re: Convenciones al programar
Publicado por: nanochess en 30 de Octubre de 2012, 03:37:30 pm
Yo a la hora de utilizar etiquetas, o incluso comentarios, los hago tanto en ingles como castellano como en spanglish. Cosas como 'JumpTotalContador' o 'MaloType01Salto'.

Muy al principio yo también hacía algo similar, hasta que empecé a confundirme.

Citar
También tengo alguna rutina con comentarios como 'Esta rutina es una mierda, pero funciona' que esta en el TOGK.

xD

Citar
Todo lo escribo en minúsculas, y algún comentario en mayúsculas para que resalte.

En otros lenguajes hay libros de estilo, pero para ensamblador no he visto nada de eso, la verdad.

Hay muchas convenciones en el lenguaje C por ejemplo. En ensamblador casi no aplica porque tiene muy poca sintaxis y hay muchos ensambladores con sintaxis diferente para cada procesador.


Título: Re: Convenciones al programar
Publicado por: theNestruo en 31 de Octubre de 2012, 08:38:51 pm
Buenas!

Pues yo creo que lo mejor es ilustrar con un pantallazo... (así de paso doy pistas -bastante gordas ;D- de con lo que ando liao).

En mi caso utilizo Notepad++, tipo de letra Consolas, esquema de colores Obsidian. La definición del lenguaje (para el resaltado de sintaxis) la he tenido que toquetear un poco porque está pensada para otro ensamblador... pero es algo que se hace de forma bastante fácil.
No tengo configurado ningún botón para compilar ni nada; suelo tener por detrás una ventana de línea de comandos y un pequeño .bat para compilar, ejecutar, hacer commit al repositorio (utilizo fossil en local) y ese tipo de cosas :)

Respecto al código:
  • Instrucciones, registros, etc. en minúscula. Tab, instrucción, tab, parámetros.
  • Direcciones de memoria y constantes (equ) en mayúsculas, salvo si son variables en RAM, en cuyo caso uso minúsculas, salvo si son direcciones de variables del sistema (como CLIKSW) que entonces sí que van en mayúsculas.
  • Números en formato $00. Debería haberme acostumbrado al 000h, que me los resaltaría el editor... pero ya es demasiado tarde.
  • Nombres de variables, métodos, etc. en inglés; queda más breve y me suena mejor al juntarlo con los nombres de la BIOS, etc.
  • Comentarios mayoritariamente en español y generalmente a la izquierda. Comentarios a la derecha del código los dejo para explicaciones más técnicas (por ejemplo: ; hl += a).
  • Línea de guiones (-) al principio y fin de cada rutina y, en ocasiones, entre el fin de la rutina y alguna posible tabla de saltos/datos utilizados por la rutina. Si la ejecución de la rutina continúa en la siguiente, lo indico como veis con VVVV donde iría la instrucción y el texto "falls through".
  • Cabeceras de secciones gordas (inicio de la ROM, inicio de rutinas gráficas, inicio de los imports binario, inicio de la RAM, etc.) con el nombre del bloque tabulado y dos líneas de iguales (=) rodeándolo.

@nanochess: tienes que empezar a abandonar el edit.com :) cuando pases a un Windows 7 no te vas a acostumbrar; en 32bit viene en inglés (y cambian los atajos de teclado) y en 64bit directamente no viene. Y lo de que no tenga atajo para iniciar una nueva búsqueda para mí es una pega insalvable. Y que conste que yo lo utilicé mucho... y de hecho lo sigo utilizando para cotillear binarios (edit /64 fichero.bin).


Título: Re: Convenciones al programar
Publicado por: MsxKun en 31 de Octubre de 2012, 09:20:40 pm
  • Números en formato $00.
Se me habia olvidado este punto! :D Tb uso $00 siempre. No soporto que el indicador h vaya detras :P En cambio para los binarios no me queda mas remedio que usar 0000000b. No es que me guste, pero no me queda otra... creome.


Título: Re: Convenciones al programar
Publicado por: nanochess en 31 de Octubre de 2012, 11:39:16 pm
Buenas!

Pues yo creo que lo mejor es ilustrar con un pantallazo... (así de paso doy pistas -bastante gordas ;D- de con lo que ando liao).

Te guardo el secreto :), oops! creo que todo el foro ya lo vio ;D

Citar
En mi caso utilizo Notepad++, tipo de letra Consolas, esquema de colores Obsidian. La definición del lenguaje (para el resaltado de sintaxis) la he tenido que toquetear un poco porque está pensada para otro ensamblador... pero es algo que se hace de forma bastante fácil.
No tengo configurado ningún botón para compilar ni nada; suelo tener por detrás una ventana de línea de comandos y un pequeño .bat para compilar, ejecutar, hacer commit al repositorio (utilizo fossil en local) y ese tipo de cosas :)

Se ve muy agradable y cómodo. Igual uso una ventana de línea de comandos y un pequeño .bat para compilar. Mantengo un BlueMSX para ejecutar (Stop/Play). Mi repositorio es manual (MD 20121031,COPY *.ASM 20121031) ;D, lo había olvidado mencionar pero es un punto muy importante para retornar a algo operativo cuando se detectan bugs o se dañan archivos accidentalmente.

Citar
Respecto al código:
  • Instrucciones, registros, etc. en minúscula. Tab, instrucción, tab, parámetros.
  • Direcciones de memoria y constantes (equ) en mayúsculas, salvo si son variables en RAM, en cuyo caso uso minúsculas, salvo si son direcciones de variables del sistema (como CLIKSW) que entonces sí que van en mayúsculas.
  • Números en formato $00. Debería haberme acostumbrado al 000h, que me los resaltaría el editor... pero ya es demasiado tarde.
  • Nombres de variables, métodos, etc. en inglés; queda más breve y me suena mejor al juntarlo con los nombres de la BIOS, etc.
  • Comentarios mayoritariamente en español y generalmente a la izquierda. Comentarios a la derecha del código los dejo para explicaciones más técnicas (por ejemplo: ; hl += a).
  • Línea de guiones (-) al principio y fin de cada rutina y, en ocasiones, entre el fin de la rutina y alguna posible tabla de saltos/datos utilizados por la rutina. Si la ejecución de la rutina continúa en la siguiente, lo indico como veis con VVVV donde iría la instrucción y el texto "falls through".
  • Cabeceras de secciones gordas (inicio de la ROM, inicio de rutinas gráficas, inicio de los imports binario, inicio de la RAM, etc.) con el nombre del bloque tabulado y dos líneas de iguales (=) rodeándolo.

Muy bien estructurado. También uso los números con $00, no me puedo adaptar al 00h. A veces cuando me da tiempo pongo las líneas de guiones para embellecer.

Citar
@nanochess: tienes que empezar a abandonar el edit.com :) cuando pases a un Windows 7 no te vas a acostumbrar; en 32bit viene en inglés (y cambian los atajos de teclado) y en 64bit directamente no viene. Y lo de que no tenga atajo para iniciar una nueva búsqueda para mí es una pega insalvable. Y que conste que yo lo utilicé mucho... y de hecho lo sigo utilizando para cotillear binarios (edit /64 fichero.bin).
Creo que voy a probar ese Notepad++ ;)