Tips para mejorar tu estilo de programacion (III)

Hola una vez más.

Os pido perdón a todos (y en especial a Juan Carlos) por la tardanza en esta última entrega, espero que os los consejos os sean útiles.

Dicho esto, vamos al lio.

Esta es la última entrega de la mini serie de “Tips para mejorar tu estilo de programación” (capitulo 1 y capitulo 2). En la entrada previa, vimos como había que declarar las variables, métodos, acciones y clases de forma descriptiva y representativa.

Esta vez hablaremos de los espacios en blanco, tabulaciones y salto de linea. Como siempre utilizaremos ejemplos para intentar explicarlo de la mejor forma posible.

A la hora de agregar tabulaciones o espacios en blanco al código, a veces solemos tener problemas si abrimos el archivo con editores diferentes.Ya que algunas veces lo que en un editor es una tabulación otro editor lo entiende como 2 espacios en blanco y siempre hay que dejar claro cuando se usa una u otra opción.

Para evitar tener problemas de este estilo, se recomienda que siempre se edite el código con el mismo IDE. Actualmente contamos con Sublime Text 3, un editor muy potente y versátil gracias a la cantidad de snippets (plugins), atajos de código, plantillas y un largo etcétera con las que cuenta el editor. Personalmente es el que suelo utilizar desde hace casi un año y con el cual estoy muy satisfecho con su rendimiento.

Una vez explicado este pequeño problema con algunos editores, vayamos al grano.

Espacios en blanco (namespaces)

Utilizar los espacios en blanco de la forma adecuada puede resultar muy agradable a la hora de leer el código, por ejemplo a la hora de asignar valores a ciertas variables o en los valores de las estructuras de control.

int width = 0;

int length = 0;

int size = 0;

En la asignaciones de valores a variables, podemos ver que cada uno de los elementos de los que se compone la asignación están separadas por un espacio en blanco. Supongamos que en vez de tener tres variables existen más de 20, si están todos los elementos juntos es más “engorroso”, digamos que es menos elegante a la hora de presentar el código.

Esto sucede de igual forma en las estructuras de control, como por ejemplo los “fors”.

for ( int i = 0; i < 10; i++ ){

};

Al separar cada componente es más facil de ver cada una de sus partes.

Tabulaciones

Las tabulaciones suelen ser útiles a la hora de escalonar el código, como por ejemplo en estructuras de control (condicionales y bucles).

Véase un ejemplo.

while(1){

          if (x==0){

                   if (y<10){};

          };

};

Si estuviera todo seguido y sin tabular sería muy complicado conocer el escalonamiento de la estructura.

Y de esta forma se puede ver que dentro del while existen dos condicionales anidados.

Saltos de linea

Los saltos de linea son aconsejables realizarlos para diferenciar extractos de código. Por ejemplo cada vez que se termine de declarar una clase agregar un salto de linea, para así poder diferenciarla de la siguiente clase.

public class CalculateRectPerimeter {

           public static void main(String[] args) {

           };

};

#saltodelinea

public class ShowResults {

          public ShowResults {

           };

};

Con estos últimos consejos finalizamos la serie de los tips para mejorar tu estilo de programación.

Espero que os haya servido de ayuda, algunos consejos ya los conoceríais y otros tal vez no.

Si queréis ver un ejemplo práctico de una buena guía de estilo, aquí os dejo el GitHub del proyecto Genbeta Dev Engine donde en su wiki han expuesto las normas/guías de estilo que debe cumplir su proyecto. Es un buen ejemplo si tenéis que empezar un proyecto con varias personas y tenéis que poner una guía de estilo para tener todo el código homogéneo.

Un saludo,

Daniel (@DaniLabs).

Tips para mejorar tu estilo de programacion (II)

Hola a todos.

Hoy os traigo la segunda parte de la serie “Tips para mejorar tu estilo de programación“, en la cual aprenderemos algunos consejos para mejorar nuestro código. Sino habéis leído el primero aquí os lo dejo Tips para mejorar tu estilo de programacion (I).

Os recuerdo que en el post anterior veíamos la importancia de usar nombres y clases descriptivos/representativos, además de tener una uniformidad en el idioma en todo nuestro proyecto.

Siguiendo en la misma línea, veamos el siguiente fragmento de código:

exampleclass

Como podemos ver los nombres de las variables son sustantivos que representan una entidad y los métodos representan una acción por lo que suelen contener un verbo.

En nuestro caso tenemos el método GetName que devuelve el nombre de la clase Persona y el método IsOnline que devuelve un booleano en función del contenido de la variable online. En ambos casos hemos utilizado una notación CamelCase , es decir, la primera letra de cada palabra la está en mayúsculas y el resto en minúsculas.

La notación CamelCase es la más utilizada en los equipos de programadores al ser más intuitiva que el resto de notaciones .Aunque también existe la notación Húngara en la cual se agrega al principio de la variable el tipo al cual pertenece.

Si utilizamos nombres descriptivos y representativos conseguiremos evitar escribir más comentarios de los debidos. Es decir, si tenemos un código de 30 líneas y tenemos  15 de comentarios, deberíamos revisar el código y reescribir las variables y métodos para conseguir eliminar comentarios; con el fin de tener un código más comprensivo y útil.

En la segunda parte de este artículo sobre tips para mejorar tu estilo de programación vamos con los comentarios.

El primer objetivo de los comentarios es que tienen que ser útiles, es decir, no debemos comentar cosas obvias, así que, reflexiona antes de comentar si es necesario o no.

Ejemplo:

totalclientes

Además, debemos evitar agregar comentarios dentro de métodos y funciones, puesto que tenemos que comentar qué hace el método y no el cómo lo hace. Con una breve definición de lo que hace, cuales son los parámetros de entrada (si tiene) y cuál es el valor que retorna (si tiene) es más que suficiente.

Veamos un ejemplo en Java.

commen1t

Analicemos este fragmento de código. Podemos ver que hemos agregado las etiquetas @param (indica los parámetros de entrada) y @return (indica los parámetros de salida), es la forma en la cual se debe comentar un método o clase en Java.

Si seguimos esta estructura de comentario conseguiremos un estilo limpio, claro y comprensivo. Además, al utilizar las etiquetas de @param y @return (*) podemos generar una pequeña API de forma automática para nuestro proyecto gracias al comando javadoc <nombrearchivo>.java .

Finalmente, añadir que los comentarios también deben de mantenerse, ser claros, precisos y con un lenguaje educado (recuerda que trabajas en equipo y debes ser respetuoso con tus compañeros). Comenta el código conforme lo estás escribiendo y no lo dejes para el final.

Espero que os haya gustado y que de esta forma poco a poco vayamos teniendo un código más limpio y comprensivo.

En la próxima entrega veremos la parte de espacios, tabulaciones y líneas en blanco.

(*) Nota: Más información sobre los comentarios en Java (Enlace).

Un saludo,

Daniel (@DaniLabs)

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