Como ingeniero de software, ¿qué tan importante es leer el código de otros?

25

Soy un ingeniero de software en ciernes (ahora estudiante de segundo año, con especialización en CS) y realmente me cuesta entender los programas de otras personas. Quiero saber si esta habilidad (o falta de ella) puede ser una desventaja para mí, y si es así, ¿cómo puedo desarrollarla?

James Bond
fuente
1
¿Sientes que entiendes el código cuando también te lo explican o simplemente estás aprendiendo por prueba y error?
JeffO
1
¿Por qué se etiqueta este 'estilo de codificación'? ¿Es la razón por la que tiene problemas para leer el código porque está mal formateado? La capacidad de leer el código no significa que necesite la capacidad de comprender código muy mal formateado u ofuscado. Ejecute el código a través de una herramienta de formato primero si es útil.
Brandin el
Acabo de leer un artículo esta mañana que me recordó esta pregunta. ¿Por qué trabajar en Chrome me hizo desarrollar una herramienta para leer el código fuente
Eric King
¡Esta es una gran pregunta! Tenía una pregunta de seguimiento: si trabaja principalmente solo en su propio código (por ejemplo, como programador científico en un proyecto pequeño), ¿cómo encuentra un buen código para leer? Esto se ha preguntado antes: softwareengineering.stackexchange.com/questions/69892/…
Gaurav

Respuestas:

49

Es esencial.

La forma en que lo desarrolla es escribiendo su propio código (mucho), y sí, luchando por leer el código de otras personas.

El problema, por supuesto, es que no todos piensan como tú. Estuve en una clase de primer año de Java hace mucho tiempo, y nos dieron una tarea. Al contrario de lo que creía (que era que las respuestas convergerían en tres o cuatro soluciones comunes), todos en la clase tenían una solución única para la tarea.

Se deduce que deberías estar leyendo un buen código.

Esta es una de las razones por las que los Patrones de diseño se han vuelto tan populares y por qué debería estudiarlos. Los patrones de diseño proporcionan un vocabulario común para que los programadores se comuniquen y sintonizan su mente para encontrar "mejores" formas de resolver problemas informáticos.

También debe estudiar algoritmos y estructuras de datos.

Corolario: siempre debe esforzarse por escribir código que otros desarrolladores puedan entender fácilmente.

Robert Harvey
fuente
77
Corolario: Inicio simple, esforzándose por escribir código que usted pueda comprender fácilmente :-)
gnasher729
44
Generalmente es una buena respuesta, excepto la parte sobre patrones. La mayoría de los patrones de GoF (que es lo que piensan las personas cuando usas el término) están sobredimensionados, demasiado finos, demasiado centrados en OO o simplemente antipatrones simples. Y luego la gente aparece aquí preguntando cuál de estos patrones deberían usar para su solución. Por favor, nunca aconseje a los desarrolladores que pierdan su tiempo con patrones.
David Arno
Para pequeños problemas (por ejemplo, invertir los números en una lista), las posibles respuestas deberían converger en un pequeño número de posibles soluciones. Las buenas tareas deben requerir resolver muchos de estos problemas y organizar las soluciones a esos problemas de alguna manera, por lo que el número total de posibles soluciones para la tarea crecerá muy rápidamente.
Brandin
15

Es muy importante

Una vez que te gradúes y salgas al mundo, la mayoría de los proyectos en los que trabajarás ya tendrán código aportado por otros. ¡Lucky es el programador que pasa todo su tiempo en proyectos nuevos!

Es una habilidad que se adquiere a través de la práctica y la paciencia, y en muchos casos, es una habilidad en la que muchas personas realmente no tienen muchas oportunidades de trabajar hasta después de graduarse y obtener ese primer trabajo. ¡Relajarse!

(¡aunque si tu escuela tiene un programa cooperativo, eso te daría experiencia previa a la graduación para trabajar en proyectos grandes que en su mayoría están escritos por otras personas Y te da créditos académicos! ¡Algo a tener en cuenta, si está disponible)

FrustratedWithFormsDesigner
fuente
7

Es una habilidad importante , dependiendo de los detalles del lugar donde trabajas, incluso podría ser más importante que escribir el código en sí.

Como otras habilidades, ¡la práctica hace la perfección! Trate de leer el código de otro programador, depúrelo y lo que me ayuda personalmente es refactorizar o mejorar pequeños fragmentos de código y expandir desde allí.

RMalke
fuente
Además, conocer un proyecto de código abierto que usa e intentar comprender cómo funciona el código interno puede ser útil
RMalke el
4

Hay habilidades distintas tanto en lectura como en escritura de código.

  • Uno es la sintaxis. Saber cómo se ve una declaración de método.
  • El otro es la intención. Saber por qué existe el método y para qué sirve.

En cuanto a lectura vs. escritura. Sí, la lectura es esencial.
Algunas máximas que nos ayudan a muchos de nosotros con eso son:

  • El código se lee 10 veces (al menos) por cada vez que se escribe.
  • Alguien que lee el código es a menudo ... yo en el futuro leyendo el código.
  • No defendería mi estilo de código desde hace más de 1 año, ha mejorado desde entonces.

OKAY. Entonces eso es genial. Ahora baja a lo que probablemente estés experimentando.

Dios mío, esta enorme base de código con decenas de miles de líneas de código fuente y clases que tienen cientos de líneas de largo con dependencias locas y cada vez que trato de seguir algo tengo que mantener 10 niveles en mi cabeza, etc., etc.
Suena familiar ? Sí. Respiracion profunda. Relajarse. Es normal. De eso están hechos los sistemas de producción. La gente sobrevive (y florece) en estas situaciones aparentemente incomprensibles porque:

  • existen pruebas (con suerte) y también ayudan a documentar el sistema.
  • los programadores se emparejan y, a menudo, trae más del doble del resultado.
  • Los buenos programadores se vuelven buenos diciendo que no entienden hasta que lo hacen.
  • los cambios son frecuentemente solo una o unas pocas líneas de código que ayudan a aislar qué probar
  • las bases de código tardan meses e incluso años en familiarizarse con
Michael Durrant
fuente
Y, por último, los buenos programadores escriben mensajes de confirmación significativos al realizar cambios en los sistemas de control de versiones de origen. (Siéntase libre de agregar a la respuesta)
rwong
1

La mayoría de estas respuestas se centran en la importancia de la lectura de códigos para la superación personal. Estoy totalmente de acuerdo y lo apoyo.

Hay otro ángulo con el que debe tener cuidado: incluso si fuera un prodigio que no podría beneficiarse de la lectura de otros enfoques (imposible, pero por el argumento ...), aún necesitaría saber cómo leer el código debido a un concepto que básicamente no existe en el ámbito universitario: la gran mayoría de los proyectos de la industria son proyectos de campo marrón (es decir, integrarse o integrarse con una base de código preexistente).

La necesidad de leer el código solo para comprender la base de código y los procesos existentes es real. Siempre es posible hacer preguntas a otro desarrollador sobre el código, pero esto solo puede llevarle tanto tiempo. La gente se va, cambia de proyecto o el tiempo simplemente pasa. Los detalles de bajo nivel se desvanecen de la memoria y los programadores de mantenimiento aplican parches. En algún momento, no hay una única fuente de verdad, excepto el código en sí.

Una buena higiene del código, guías de estilo, revisiones de código y ayuda con la documentación, pero en algún momento el código es la fuente de la verdad sobre lo que sucede y la única forma de encontrar la respuesta será ir a buscarlo usted mismo. Además de sus usos en el autodesarrollo, la capacidad de leer código es una habilidad claramente separada de escribirlo.

Miguel
fuente
0

Comprender el código de los demás es algo de lo que no se puede escapar, ya que probablemente trabajará en equipo, incluso si no está en el equipo, buscará en Google diferentes cosas y tendrá que comprender el código de muestra. Entonces sí, es imprescindible.

Lo que siento es que todo el mundo tiene ese sentimiento, puede ser menos que otro, especialmente al comenzar, entiendes tu código mejor que otros, ya que pasas mucho más tiempo con tu propio código que el código de otra persona, ya que no solo lees sino que escribes y estructuras en tu mente Si comienza a pasar más tiempo con el código de otros y primero trata de ver qué tipo de estructura / flujo se está utilizando, esto ciertamente le hará comprender mejor el código.

Para que mi punto sea aún más convincente si tiene algún código que escribió hace un año, intente comprenderlo nuevamente y puedo asegurarle que tomará más tiempo pero menos que el código de otros, ya que tiene idea de cómo estructurar su código.

Espero esta ayuda, no te decepciones, es perfectamente normal. Pase más tiempo con el código y eventualmente lo obtendrá.

techExplorer
fuente
0

Bueno, acabo de recibir un proyecto con aproximadamente 100,000 líneas de código escritas por un equipo en un país diferente, y tengo que hacer algunos cambios muy significativos en una copia de su código en los próximos meses, mientras dejo tanto código en común como sea posible.

Usted me dice cómo puedo hacer mi trabajo sin la capacidad de leer el código de otras personas, rápidamente. Si no puede leer el código de otras personas, está completamente atascado.

gnasher729
fuente