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:
: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:
: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.
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:
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:
:mnu_1
:mnu_D
:menu_User
Luego veré si se me ocurre algo más, saluDOS
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.
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
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:
@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!!!
@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.