Convención sobre codificación Batch

Iniciado por leogtz, 9 Agosto 2010, 18:53 PM

0 Miembros y 1 Visitante están viendo este tema.

leogtz

Hola a todos.

Esta propuesta surge a raíz de la ola de distintas maneras de codificar que he visto en algunos scripts últimamente. Si bien podemos hacer el script como nos de en gana, esto puede ser perjudicial para el desarrollo del mismo, cuando otros programadores lo vean, se hará dificil entenderlo, así que propongo que entre todos hagamos una lista de cómo se debería programar en Batch. Cosas como:

Código (dos) [Seleccionar]

:label

código
código
código


El ancho de tabulador a 4 espacios, deja una línea en blanco antes de la declaración de etiqueta y una después, luego el código tabulado.

La declaración de una función:


Código (dos) [Seleccionar]
:string_f

código
código
código

goto:string


Lo mismo que antes, una línea en blanco antes y después de la declaración de etiqueta, el nombre de la "función" seguida de un "_f" que hará claro que es una función.


También cómo deben ser los nombres de las variables, etc, etc.

Cosas como estas, que creo son para bien. Así que si les gusta la idea apoyenla. Espero su colaboración.


Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

DA KILLER

Pues creo que estaría bueno, ya que ayudaría a entender mejor los codes de otros, por ejemplo en el último batch en el que estoy trabajando tengo cerca de 100 variables, más de 50 labels seguro y bueno, a la hora de encontrar algo es un desorden total...

Asi que voto a favor, por mi parte creo que sería bueno que al principio del batch se hiciera una sección con la declaración de las variables, separadas en grupos segun si son de valor numérico (incluyendo valores hexadecimales y binarios), de valor "textual" o de valor True-False (no me acuerdo como se dice).

Ejemplo:

Código (dos) [Seleccionar]


REM ********* .: sección DE DECLARACION DE VARIABLES :. *********
REM ************ .: VARIABLE'S DECLARATION SECTION :. ************

REM ---------- VARIABLES NUMERICAS - NUMERICAL VARIABLES ----------

REM Aqui se declararan las variables que SIEMPRE tendrán un valor NUMERICO

set "rdrc=0"
set "sbmnu=0"
set "qcred=0"
set "vd=0"
set "vdbm=0"
set "userlong=0"

REM ---------- VARIABLES "TEXTUALES" - "TEXTUALS" VARIABLES ----------

REM Aqui se declararán las variables que tendran un valor TEXTUAL (contendran texto)

set "user="
set "curdir=%cd%"

REM ---------- VARIABLES DE OPCION - OPTION'S VARIABLES ----------

REM A veces es mejor, o simplemente más facil comparar un valor con otro para decidir a que menu dirigir el script

set "opA=1"
set "opB=2"
set "opC=3"
set "opD=4"
set "opE=5"
set "opF=6"
set "opG=7"

REM ---------- VARIABLES DE TRABAJO - WORK VARIABLES ----------

REM Aqui se declararan las variables que se editaran a lo largo del batch

set "ts="
set "header="
set "file1="
set "file2="

REM ---------- VARIABLES TRUE-FALSE ----------

REM Aqui vendran las variables que tengan valor Verdadero o Falso

set "empty=False"
set "sdc2=False"


No se si se entiende, lo que quiero decir, y luego lo que tu dices de las funciones me parece perfecto, así como vendría bien también definir los menúes mediante el uso del prefijo "mnu" antes del nombre del menú

Ejemplo:

Código (dos) [Seleccionar]
:mnu_1
:mnu_D
:menu_User


Luego veré si se me ocurre algo más, saluDOS
.: DA KILLER :.



maxx93

Es una buena idea, pero si bien ayuda a otros programadores a entender, acorta la libertad del que crea el code, acordándose al mismo tiempo lo que tiene que trabajar el code con lo que tiene que escribir para su comprensión.
A mi gusto sugeriría mas el uso de comentarios en el bat


rem comentario
::comentario


explicando el funcionamiento del mismo. Salu2.

flony

apoyo la idea...en lo personal a la hora de planear algo en forma modular deberia dejarse un renglon para separar una funcion de otra
si un problema no tiene solucion entonces no es un problema...es algo inevitable

EddyW

Me parece muy buena la idea..
También creo que podrían usar los "=" como separadores de código, le da un aspecto más profesional (Si encuentran una mejor palabra para atribuirlo, mejor.)
y una forma no muy correcta de usar comentarios, pero funciona, ;)
y por último, el uso de tabulaciones, cuando escribes una función dentro de una función, o un For dentro de Otro:
Código (dos) [Seleccionar]
@Echo Off
SetLocal EnableDelayedExpansion

(========================================
[ Ejemplo usando FOR ]
=========================================)2>nul
For /l %%y In (1 1 24) Do (
For /l %%x In (1 1 60) Do (
Set Vector[%%x][%%y]=*
    Set /p=!Vector[%%x][%%y]!<nul
)
Echo.
)

=========================================
Pause>nul


SaluDOS!!!

leogtz

#5
@DA KILLER y @Nilrac, borré sus mensajes, no hacen alusión a la temática del mensaje.

Respecto al tema, mañana propondré más cosas, espero y estén atentos a esto.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com