Tips para mejorar tu estilo de programacion (I)

Hola a todos.

Hoy tengo el placer de presentaros a un colega, que espero, colabore por largo tiempo en esta casa, se trata de un joven Estudiante de Ingeniería Informática en la UPNA, Apasionado por la seguridad informática, con muchas ganas de aprender y enseñar todo lo que pueda, un poco maniático con el orden y el minimalismo como el mismo se define, se trata de Daniel Diez conocido en twitter como @Danilabs el cual se va a encargar de mostrarnos como se programa de manera eficaz y con un estilo depurado, para que le conozcais un poco mas os diré que ha sido nombrado Hall of Fame en Microsoft en Agosto 2013 y Noviembre 2013 en ambas ocasiones fueron por un XSS, una fue en el reproductor Flash del dominio cloudapp y otra en el reproductor de video de MSConvergence (web de evento de microsoft) Además también encontro un XSS en el cuadro de búsqueda de la web Seagate.com y le recompensaron con un HDD de 500GB, y recientemente en la web de ESET.es descubrió otro XSS en un cuadro de búsqueda que fue recompensado con una licencia de 1 año.
Como veis es una colaboración de lujo, que nos ayudara a progresar en nuestro camino en la seguridad.

Le doy la bienvenida y sin mas preámbulos os dejo con el primero de los que sean espero una larga colaboración…

Después del parón navideño y como bien dijo Juan Carlos en Introducción a la práctica de los lenguajes de script vamos a traer una serie de artículos sobre programación al blog y espero que os sean de utilidad.

En este caso, voy a hacer una serie de capítulos en los cuales comentaré algunos de los consejos y/o herramientas que utilizo para mejorar mi estilo de programación. Me gustaría agregar que el lenguaje que utilizaré para los ejemplos será Java, debido a que es un lenguaje POO primordial para cualquier programador.

Bueno, vamos al lio.

En primer lugar quisiera aclarar que para mí leer un código debe ser como “leer un libro”, es decir, a la vez que vas leyendo el código no deberías tener ninguna complicación, en lo que respecta a la sintaxis (otra cosa es el funcionamiento). Es una cuestión que quería aclarar ya que he visto programadores (compañeros míos de carrera) que en tres archivos con 30 líneas de código cada uno, NO sabían qué hacía su código y tenían que ir buscando a ver para que se usaba cada una de las variables.

Veamos con un ejemplo a lo que me refiero.

code1

Es un extracto de una clase llamada Persona, la cual solamente tiene el constructor Persona que recibe dos argumentos de tipo String (cadena). El código es completamente funcional y hace lo que debe, digamos que “funciona”.

Pero las variables ahí expuestas tienen varios problemas:

– Están en idiomas distintos (español e inglés): Cuando comienzas a hacer un proyecto debes dejar claro en qué idioma se va a programar para evitar confusiones de variables y tener un código uniforme y fácil de comprender.

– Abreviaturas abstractas: Como podemos ver la variable “no” no define de forma indistinguible lo que representa, es decir, “no” podría equivaler a “nombre” o a otro atributo de la clase. Por lo que podría contener el “nombre” u otro dato.

Si vas a programar para ti y solo para ti, obviamente puedes escribir el código como te venga en gana, nadie te va a decir nada. Aunque, en los proyectos por lo general suelen participar otras personas, las cuales te agradecerán que tu código sea comprensible al menos en la sintaxis y que este en un idioma común. Por lo que nunca esta demás ayudar y facilitar la vida a tus compañeros.

Ahora veamos el mismo código con una serie de normas de estilo.

code2

Esta vez lees el código y comprendes todas las variables junto con sus asignaciones.

Simplemente hemos escrito todas las variables en inglés y el nombre completo del atributo. Ahora “no” es “name” y “telf” a pasado a ser “phone”, por lo que resulta más sencillo comprender cual será su funcionamiento.

Finalmente como resumen en el tip de hoy hemos aprendido lo siguiente:

– Tener uniformidad de idioma en el código y en la documentación de todo el proyecto.

– Utilizar nombres de variables y clases representativas.

Aunque haya sido una entrada muy sencilla y básica, creo que son la base de un buen proyecto.

Espero que os haya gustado.

Un saludo,

Daniel (@DaniLabs)

Segunda parte ” Tips para mejorar tu estilo de programacion (II)  “

Introducción practica a los lenguajes de script (cmd, bash, vbs y js)

Hola a todos

Como lo prometido es deuda, vamos a empezar después de estas fiestas con un tema apasionante como es la programación, por el que iremos avanzando poco a poco tratando de que queden claros los conceptos.

Creo (opinión personal) que en este terreno no hay otra opción que no sea la práctica, práctica, práctica…y cuando creas que no hay más…seguir practicando, ya te puedes leer 100.000 manuales sobre programación que sin practica vas listo.

Vamos a empezar con un par de ejemplos nada complicados, de programación de scripts en bash y cmd, y por ultimo vamos a realizar 2 pequeños programas uno javascript y otro en visual basic script, todo ello como introducción para continuar, por separado, mejorando cada uno de ellos con nuevas y mejores prestaciones (en el caso de vbs y js) y creando nuevos y más poderosos scripts en bash.

Sin más preámbulos comencemos con cmd, vamos a dar por supuesto que conocemos los comandos comunes de cmd, (si tienes dudas se pueden solucionar con un simple help desde el prompt  c:\)

Veremos un ejemplo de un pequeño script que nos crea un menú estático, que nos ofrece 6 opciones distintas de ejecución…

a

Fijaos que en la línea uno se encuentra @echo off lo que nos va a ocultar el resultado de la ejecución línea por línea de nuestro script en pantalla, después se muestran una serie de líneas echo con las cuales vamos a crear una serie de cuadros de información, fijaos…

Sigue leyendo