Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: leogtz en 9 Agosto 2010, 18:53 pm



Título: Convención sobre codificación Batch
Publicado por: leogtz en 9 Agosto 2010, 18:53 pm
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
  1. :label
  2.  
  3. código
  4. código
  5. código
  6.  

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
  1. :string_f
  2.  
  3. código
  4. código
  5. código
  6.  
  7. goto:string
  8.  

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.


Título: Re: Convención sobre codificación Batch
Publicado por: DA KILLER en 9 Agosto 2010, 22:49 pm
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
  1.  
  2. REM ********* .: sección DE DECLARACION DE VARIABLES :. *********
  3. REM ************ .: VARIABLE'S DECLARATION SECTION :. ************
  4.  
  5. REM ---------- VARIABLES NUMERICAS - NUMERICAL VARIABLES ----------
  6.  
  7. REM Aqui se declararan las variables que SIEMPRE tendrán un valor NUMERICO
  8.  
  9. set "rdrc=0"
  10. set "sbmnu=0"
  11. set "qcred=0"
  12. set "vd=0"
  13. set "vdbm=0"
  14. set "userlong=0"
  15.  
  16. REM ---------- VARIABLES "TEXTUALES" - "TEXTUALS" VARIABLES ----------
  17.  
  18. REM Aqui se declararán las variables que tendran un valor TEXTUAL (contendran texto)
  19.  
  20. set "user="
  21. set "curdir=%cd%"
  22.  
  23. REM ---------- VARIABLES DE OPCION - OPTION'S VARIABLES ----------
  24.  
  25. REM A veces es mejor, o simplemente más facil comparar un valor con otro para decidir a que menu dirigir el script
  26.  
  27. set "opA=1"
  28. set "opB=2"
  29. set "opC=3"
  30. set "opD=4"
  31. set "opE=5"
  32. set "opF=6"
  33. set "opG=7"
  34.  
  35. REM ---------- VARIABLES DE TRABAJO - WORK VARIABLES ----------
  36.  
  37. REM Aqui se declararan las variables que se editaran a lo largo del batch
  38.  
  39. set "ts="
  40. set "header="
  41. set "file1="
  42. set "file2="
  43.  
  44. REM ---------- VARIABLES TRUE-FALSE ----------
  45.  
  46. REM Aqui vendran las variables que tengan valor Verdadero o Falso
  47.  
  48. set "empty=False"
  49. set "sdc2=False"
  50.  

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
  1. :mnu_1
  2. :mnu_D
  3. :menu_User

Luego veré si se me ocurre algo más, saluDOS


Título: Re: Convención sobre codificación Batch
Publicado por: maxx93 en 9 Agosto 2010, 23:54 pm
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

Código:
rem comentario
::comentario

explicando el funcionamiento del mismo. Salu2.


Título: Re: Convención sobre codificación Batch
Publicado por: flony en 10 Agosto 2010, 13:47 pm
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


Título: Re: Convención sobre codificación Batch
Publicado por: EddyW en 10 Agosto 2010, 15:52 pm
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
  1. @Echo Off
  2. SetLocal EnableDelayedExpansion
  3.  
  4. (========================================
  5. [ Ejemplo usando FOR ]
  6. =========================================)2>nul
  7. For /l %%y In (1 1 24) Do (
  8. For /l %%x In (1 1 60) Do (
  9. Set Vector[%%x][%%y]=*
  10.    Set /p=!Vector[%% style="color: #448888;">x][%%y]!<nul
  11. )
  12. )
  13.  
  14. =========================================
  15. Pause>nul

SaluDOS!!!


Título: Re: Convención sobre codificación Batch
Publicado por: leogtz en 15 Agosto 2010, 07:15 am
@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.