elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Convención sobre codificación Batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Convención sobre codificación Batch  (Leído 3,848 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Convención sobre codificación Batch
« 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.


« Última modificación: 9 Agosto 2010, 18:56 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
DA KILLER

Desconectado Desconectado

Mensajes: 85


Solo sé que no sé nada...


Ver Perfil
Re: Convención sobre codificación Batch
« Respuesta #1 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


En línea

.: DA KILLER :.


maxx93

Desconectado Desconectado

Mensajes: 99


Lo imposible es la ignorancia de lo posible


Ver Perfil
Re: Convención sobre codificación Batch
« Respuesta #2 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.
En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: Convención sobre codificación Batch
« Respuesta #3 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
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
EddyW

Desconectado Desconectado

Mensajes: 187



Ver Perfil WWW
Re: Convención sobre codificación Batch
« Respuesta #4 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!!!
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Convención sobre codificación Batch
« Respuesta #5 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.
« Última modificación: 15 Agosto 2010, 07:19 am por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Se prepara un documental sobre la convención hacker DEFCON
Noticias
el-brujo 5 3,353 Último mensaje 18 Agosto 2012, 07:30 am
por Weeken
glTest1: Problema con la convención de llamada
Programación C/C++
85 1 2,182 Último mensaje 7 Marzo 2013, 23:22 pm
por 85
¿Como es posible retornar estructuras con la convencion de llamadas cdecl?
Programación C/C++
Usuario887 4 3,367 Último mensaje 7 Marzo 2021, 16:28 pm
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines