BandaGeek.com es un blog de noticias en tecnología , tutoríales y entretenimiento. Aquí encuentras todo lo relacionado con la vida 2.0

Los errores recurrentes en principiantes de programación

Cuando uno comienza en este maravilloso mundo de la programación generalmente lo hace bajo el entusiasmo de crear una gran pieza de software, y por qué no un videojuego. El problema de esto es que casi siempre uno no está acostumbrado a pensar en la forma en la que un verdadero programador haría. Como consecuencia se aplican malas prácticas que a la larga llevan un proyecto al fracaso o a la imposibilidad de ser mantenido.

0

En esta nueva entrega de Code Time continuamos con el camino de la programación. Siguiendo con lo visto en la nota anterior hoy haremos referencia a errores recurrentes que los principiantes suelen cometer al comenzar a programar. Como tal no son fatales pero pueden producir verdaderos dolores de cabeza. Por suerte existe solución a esto y es simplemente prestar atención a los detalles teniendo en cuenta los lineamientos que presentamos a continuación.

NOTA: Este artículo es continuación de una serie de episodios en los que venimos desarrollando el tema. Si te interesa acceder a lo ya expuesto te dejamos un enlace directo. Allí tendrás una nota y el respectivo podcast asociado donde damos una introducción. Enlace directo.

Listen to “Code Time (80) Los errores más frecuentes de los programadores PT 2” on Spreaker.

 

Errores recurrentes en programadores principiantes

Cuando uno comienza en este maravilloso mundo de la programación generalmente lo hace bajo el entusiasmo de crear una gran pieza de software, y por qué no un videojuego. El problema de esto es que casi siempre uno no está acostumbrado a pensar en la forma en la que un verdadero programador haría. Como consecuencia se aplican malas prácticas que a la larga llevan un proyecto al fracaso o a la imposibilidad de ser mantenido.

 

Simbolo infinito representando la logitud de una funciónEscribir funciones que son demasiado grandes

Nadie comienza con la intención de escribir grandes funciones. Simplemente se escribe. Esta función necesita hacer esto, y esto otro, y , oh también esta otra cosa. Sin darse cuenta uno tiene más de 500 líneas de código o más. El problema surge a la hora de precisar qué es exactamente lo que la función hace, o debería hacer.

Las funciones son difíciles de debuguear y mantener por las siguientes razones:

  • Hay demasiadas instrucciones.
  • Es difícil de entender exactamente qué están intentando hacer.
  • Hay demasiados caminos por donde el código podría pasar. (trazas).

¿Cómo identificar funciones demasiado grandes?

No existe algo específico que establezca esta condición. Pero podemos seguir las siguientes reglas que nos acercan a ese objetivo:

  • No deben tener más de 50 líneas de longitud.
  • Deben ser explicables en una oración que no contenga “Y” u “O”  (AND, OR).
  • No debe contener más de 8 sentencias if, sentencias switch, o constructores de bucle (loops).

Por supuesto, la regla de las 50 líneas es arbitraria. Esta medida se hizo popular porque eso es lo que cabría en una sola página de papel de impresión de computadora. Sin embargo sigue estando sobre la cota superior. A medida que se pase este límite se entrará en el peligroso terreno de “cuándo se terminará esta función”.

¿Qué hacer si se superan los límites?

La clase de esto  es la subdivisión, lo cual lleva a la creación de subfunciones. Cada una de estas debe respetar las reglas anteriormente nombradas. Consideremos el ejemplo de un programa simple de procesamiento de archivos. Este puede dividirse en 4 funciones:

  • getFileObject() -> Abre un archivo obteniendo el nombre por teclado.
  • readFile() -> Lee el contenido del archivo.
  • processData() -> Procesa la información leída.
  • exportData() -> Exporta la información resultante.

Así pues podemos ver que una función larga pudo convertirse en una simple que contiene 4 llamados a funciones. Cada una de estas es fácil de entender y pueden ser escritas en mucho menos de 50 líneas.

Listen to “Code Time (81) Los errores más frecuentes de los programadores PT 3” on Spreaker.

Persona mirando fijamente un monitor de computadora esperando encontrar una respuesta

Escribir código sin un plan

Dado un problema, los programadores novatos son demasiado rápidos en escribir código sin un plan. Un programa incluye una serie de cosas que un programador experimentado da por sentado.

Especificación de los requerimientos

El programador necesita entender que es lo que el programa debe hacer.  Esto suena bastante obvio pero es fácil caer en la consideración de solo una parte del problema y no en su totalidad.

Es necesario documentar los programas para impartir cierta comprensión a su usuario de lo que el programa se supone que debe hacer.

Un detalle fundamental a no olvidar es considerar los casos frontera. Dependiendo del alcance que se quiera dar los límites serán diferentes. Una simple toma de decisión puede llevar a un desarrollo a enfocarse en personas especializadas o hacer una aplicación de uso general.

Diseñar el programa

El programador luego necesita sentarse y considerar a un nivel más alto como el programa debería trabajar. Esto es especialmente difícil para los principiantes que no cuentan con la experiencia necesaria como para distinguir niveles de abstracción.

La idea de este paso consiste en hacer un plano general del proyecto, incluyendo bases de datos, métodos de distribución, etc. Pero todo esto sin la necesidad de precisar exactamente cada línea de código necesaria.

Diseño de la interfaz

El programador necesita decidir como lucirá interfaz de usuario y cómo trabajará.Durante esta etapa se escogerá entre interfaces CLI, o GUI. En caso de ser lo segundo cómo se hará la interacción de ventanas y así hasta tener la idea completa.

Diseño de tests

Los principiantes se sorprenden mucho al aprender que los test deben ser pensados al principio del proyecto. Determinar como testear el programa afectará a cómo se implementará.

Finalmente Aprender un lenguaje de programación es solo uno de los pasos para aprender realmente la programación.

Persona frustrada por problemas de variables globales

Variables Globales

Los programadores con poca experiencia suelen cometer el grave error de declarar todas las variables que pueden de forma global.  ¿Por qué habría que preocuparse sobre este sinsentido de alcances de variables? (Scope). ¿Por qué no declarar todas las variables de forma global?. La respuesta a estas preguntas es simplemente es que pueden obtenerse resultados inesperados al hacerlo.

Problemas de las variables globales

  • Variables no inicializadas: Tal cual su nombre lo indica esto ocurre cuando una variable no se configura con un valor inicial. Esto en algunos lenguajes como Swift o Haskell se resuelve ya que obligan a hacerlo. Pero en cambio lenguajes como C permiten este comportamiento lo que lleva a tener valores basura en dicha variable.
  • Inicialización incorrecta de variables: Las variables pueden ser inicializadas correctamente, pero en algún momento cierto código se ejecuta y la sobreescribe. Esto lleva a un comportamiento inconsistente que es difícil de detectar a simple vista.

No hay nada más frustrante que encontrar que el problema que uno estuvo persiguiendo todo el día provenga de una variable global que por alguna razón fue modificada. Un ejemplo clásico de esto se lo ve en lenguajes de programación imperativos donde existen efectos laterales. La ejecución de una función podría llevar a un cambio de valor inesperado.

En python, por ejemplo, tenemos un muy buen ejemplo con la función list.sort (ordena la lista IN PLACE) y sorted (Retorna una copia ordenada). Confundir el uso de estas funciones puede llevar claramente a un resultado no deseado

Y finalmente…

Algo muy importante es tener en cuenta de que estos no son todos los errores. Pero creemos que es un buen comienzo.

Esperamos que les haya gustado la nota. No se olviden que su opinión nos importa así que no duden en escribir sus comentarios y compartir la nota si es que les gustó. O incluso si no fue así.

Aprende a desarrollar aplicaciones para iOS 11
Mis medios de contacto

Twitter    Gmail

Contenido

Spreaker    iTunes    Ivoox    Canal de Telegram    Soundcloud    Youtube

Comentarios
Loading...