Aprende a leer código fuente de otras personas

Iniciado por Mortal_Poison, Octubre 06, 2017, 07:14:20 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 06, 2017, 07:14:20 AM Ultima modificación: Octubre 06, 2017, 07:48:48 AM por Mortal_Poison
Hola a tod@s,

Bien, éste es mi segundo post y aunque no encontré la sección indicada para publicarlo, creo que el más ideal es éste.
Resulta que a veces se torna complejo el leer código fuente ajeno y que bueno, la verdad pensar lo que pensó en ese determinado momento un programador / desarrollador se puede volver complicadísimo.


Ilustración 1. Tú pensando en cómo leer el código de otra persona.

Recuerdo que hace mucho tiempo decían:
Citar "SI QUIERES APRENDER MÁS, LEE CÓDIGO FUENTE DE OTRAS PERSONAS".

Yo siempre asemejo esa frase con un escritor. Si deseas ser un escritor y quieres ser uno de los mejores, ¿te basta solo con enfocarte en tu escritura? pues la respuesta es un rotundo no. Para ser un buen escritor, debes ser un lector voráz. Para destacar, para manejar léxico, para aprender estilos, debes aprender a interpretar la escritura de otros escritores ya sean más o menos experimentados que tú.

Existen diversas técnicas para poder leer un código fuente, entre ellas:

  • Cuando el autor del programa ha escrito en un archivo donde explica la estructura del mismo y además, la responsabilidad de cada uno de los módulos.
    En otras palabras, cuando se posee documentación del programa.
  • Revisar los directorios existentes de los cuales se desprende el programa, haciendo posible la deducción de una parte de la escritura del código.
  • Ver los comentarios en las líneas que se hicieron en el programa.

A pesar de tantas técnicas que podemos encontrar, también podemos encontrar tips(la encontré hace ya varios años):
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Cómo leer código fuente de otras personas

He visto a muchos que son programadores. Alguna vez que les he dado un código para la interpretación del mismo, lo único que hacen es desplazarse de arriba a abajo con un cara de amargura e incluso, de desasosiego ante eso. Luego se arrepienten y prácticamente comienzan a excusarse:

  • El código es una mierda.
  • El código está desactualizado, no sirve.
  • Podemos resolver el problema de otras maneras.
Yo diría que es como por etapas. Sicología, ¿dónde? ;D.

Realmente me hacen dudar de su experiencia, pero son personas que no quieren calibrar su forma de desarrollo.

Siguiendo con nuestro querido post, les quiero mencionar a todos que si realmente desean aprender y entender cómo funciona el código de otra persona, la única solución viable que siempre he encontrado es la paciencia.




A continuación, un listado que me han servido a mí y que probablemente les servirá a ustedes cuando se encuentren a éste reto:


  • Build and run!
    Primero debes entender cómo funciona el programa, qué es lo que hace. No me refiero al código, me refiero al programa funcional. Luego de entender cómo funciona, piensa en una nueva función que podrías añadir. Oblígate a mejorar el programa en algo. De ésta manera, tendrás que exigirte a ti mismo saber cómo funciona el código.
  • Distinguish styles
    Distinguir los estilos es muy importante. Saber que en un código nos podemos encontrar con código spaguetti, código refactorizado o con modularidad es indispensable para que podamos apropiarnos y saber qué nos espera. No es lo mismo leer un código el cual lo hicieron por hacerlo, a leer un código bien estructurado.
  • Review main class
    Para mí, esto es muy importante. Si revisas el main o de donde se hacen los llamados a las funciones / clases / métodos, podrás ver a cuál llama primero, luego de eso, podrás irte a la función / clase / método y comenzar a leer línea por línea el por qué lo llama inicialmente. Así mismo para los demás llamados.
  • Become familiar with the new
    Familiarizarse con lo nuevo creo que es radical. A esto no me refiero que vayas a leerte un proyecto de Google si encuentras una función y no sabías lo que hacía xD, me refiero a a que si no entiendes algo, consultalo, aprende para qué sirve y regresa al código. No sirve de mucho 'perder' tiempo cuando se encuentra en tiempo de entregas. Si estás libre, en mi opinión, es válido y sería muy bueno que lo hicieras.
  • Desktop Testing
    Las pruebas de escritorio son muy útiles si te encuentras en una función con for aninados o bueno, algún loop anidado. Si no entiendes algo, haz una prueba de escritorio. Con esto, lograrás saber cuál es el límite de dicho loop(finito o infinito) y deducirás rápidamente el uso que tiene éste adentro del programa.
  • Documentation
    Pragmáticamente lo que concierne éste punto es, si crees que al método / función / clase que estás leyendo le hace falta documentación, documentalo. Me ha pasado varias veces que, leo un código de otra persona, entiendo para qué sirve una función pero cuando vuelvo a leer 'x' línea de código, no recuerdo para qué servía. Eso es tiempo perdido. Puedes evitarlo documentando dicha línea en el código.
  • Modify lines of code
    Modificar trozos de código es muy bueno, deberías hacerlo siempre que tengas la posibilidad.
  • Doubts
    Si posees dudas en una función extraña, que hasta los que la desarrollaron ni la entienden, es momento de preguntar en foros especializados. Así no te frustras y dejas todo tirado(esto para personas impacientes, por eso recalqué lo de la paciencia).
  • print('Mortal_Poison')
    Considerando que no entiendes lo que pasa en una variable, imprime lo que está antes. ¿Para qué tienes la función de impresión? ::) .

A medida que me vaya acordando y observando más consejos útiles, modificaré el tema y los pondré.

Me gustaría que ustedes también pudieran compartir sus experiencias al leer código fuente ajeno, creo que es importante para los que comienzan e incluso, para los que ya hemos tocado código.

Destaco que lo enfoque principalmente a lenguajes de alto nivel. A lenguajes de bajo nivel no tanto, porque no estoy muy familiarizado con dichos lenguajes a pesar de que hace un tiempo los trabajé. Si alguien pudiera dar unos consejos para ese tipo de lenguajes, estaría perfecto.

Para terminar, no puse nada del tema de idiomas(en específico inglés) debido a que asumo que se conoce lo básico-medio para el tema.

Un saludo.
Become the change you seek in the world. -Gandhi.


Gracias por este post, soy novato en Python y suelo leer códigos de otras personas para aprender, es algo tedioso pero como dices la paciencia ayuda de mucho. Gracias por los consejos.


Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Un gusto que te haya gustado ;D. Te invito a pasarte por los demás hilos en los demás foros.

Un saludo.
Become the change you seek in the world. -Gandhi.


Yo tengo la filosofía de qué la forma en como escribe código una persona describe a mucho detalle su manera de pensar, prácticamente podremos meternos en la cabeza de esta persona con solo leer un trozo de código que la misma haya escrito.

Una persona qué refactorize su código y lo tenga muy bien comentado desmuestra que es una persona organizada y además que es buen programador.

En cambio si esta persona escribe código espaguetti y ni siquiera se limita a comentarlo, pues todo lo contrario.

;D

aveces me toca ayudarle a amigos a seguir con su codigo, creo que esos tips que diste sirven de mucho, ademas de empezar el paso a paso que ami me ayuda a entender mejor que hace, que funciones llaman, que hace cada funcion y asi