Después de escribir el código, ¿por qué siento que "habría escrito mejor" después de un tiempo? [cerrado]

12

He estado trabajando en mi proyecto de hobby en C ++ durante más de 2 años. Cada vez que escribo un módulo / función, lo código con mucha reflexión. Ahora ve el problema,

do {
  --> write the code in module 'X' and test it
  --> ... forget for sometime ...
  --> revisit the same piece of code (due to some requirement)
  --> feel that "This isn't written nicely; could have been better"
} while(true);

Aquí 'X' es cualquier módulo (ya sea pequeño / grande / mediano). Estoy observando que, esto sucede, no importa cuánto esfuerzo ponga mientras codifico. Así que sobre todo, me abstengo de ver un código de trabajo. :)

¿Es este un sentimiento común para muchas personas? ¿Es este lenguaje un fenómeno específico? (Porque en C ++ se puede escribir lo mismo de diferentes maneras).

¿Qué debo hacer? Si obtengo esta re-factorización por un código de producción del mundo real, donde cambiar el código de trabajo no me ganará muchos elogios, sino que puede provocar problemas si falla .

    
pregunta iammilind 22.01.2012 - 12:40

7 respuestas

17

Este fenómeno es muy común y no es específico de los programadores. Cada vez que realice una tarea intelectual, notará que hay docenas de lugares donde podría haber mejorado, después de que tuvo algo de distancia. Pregunte a cualquier hombre (wo) sabio que haya escrito una tesis, y le dirán una cosa: "No la mire. Usted encontrará un error a primera vista".

Hay básicamente dos cosas para evitar el bucle de refactorización:

  1. Mientras escribe y diseña, intente obtener la perspectiva distante lo antes posible. Haga que un colega mire su diseño / código. Mira de nuevo después de un fin de semana. Míralo cuando estés borracho o drogado (pero cuidado: no cambie nada hasta que esté sobrio).
  2. Vive con la imperfección. Si simplemente no es bonito, pero funciona bien (lea: hace un buen trabajo para cumplir con todos los requisitos, incluida la extensibilidad y la legibilidad), déjelo en pie y conténtese con el buen trabajo que hizo, sin esforzarse por lograr el trabajo perfecto.
respondido por el thiton 22.01.2012 - 12:48
3

La refactorización continua es el camino a seguir. Cambiar el código de trabajo no causaría problemas y se debería recomendar si se hace correctamente. Si su código está totalmente probado, puede volver a factorizar su código con confianza.

Lo único que puede predecir sobre el código de producción del mundo real es que cambiará. No intente adivinar cómo cambiará, qué nuevas técnicas aprenderá mañana. En resumen, no intentes hacer que tu código sea "perfecto". Solo hazlo lo mejor que puedas con tu conocimiento actual. Además, asegúrese de que su código esté completamente probado y sea extensible.

Paso 20% -30% de mi tiempo refactorizando el código existente. Trabajo en una empresa de tecnología y la "administración" nunca se ha quejado de cambiar el código existente. Sin embargo, me doy cuenta de que esto puede ser un problema en algunas empresas. Martin Fowler incluso tiene una sección en su libro de refactorización .

En resumen, es un sentimiento común en mi experiencia, pero no es negativo.

    
respondido por el Chip 22.01.2012 - 21:32
2

Cada módulo / función nace y evoluciona en un mundo de prioridades. Una vez que es suficiente para cumplir los objetivos de los mundos exteriores, a menudo se deja que se estanque. Todo es finalmente un andamiaje al servicio del propósito superior. Sí, debemos ser obsesivos con el código, y sí, eso también puede hacer que nos estancemos. Tal vez sería un buen paso para usted desviarse un poco del enfoque del código y reflexionar más sobre los procesos que se producen dentro de usted, el productor del código.     

respondido por el Mark 22.01.2012 - 13:44
2
  

¿Es este un sentimiento común para muchas personas? ¿Este lenguaje es un fenómeno específico?

Eso significa que estás ampliando tus conocimientos y puntos de vista.

Si no tiene tareas de mayor prioridad, siempre debe regresar y mejorar su código.

    
respondido por el BЈовић 22.01.2012 - 14:06
2

Siempre pensé que una persona toma clases de matemáticas para fortalecer sus habilidades en la clase anterior. El álgebra parecía difícil, hasta que tomaste Álgebra II; Entonces las habilidades que aprendiste en álgebra se volvieron útiles. Es lo mismo en programación, escritura, carpintería o cualquier otra cosa.

Al tomar un curso de programación, aprendiste sobre If-then-else, que hizo muchas cosas hasta que aprendiste sobre los interruptores. Cuando estás aprendiendo algo nuevo, pasas por esta progresión, todos lo hacen.

    
respondido por el mhoran_psprep 22.01.2012 - 16:55
2

Tengo la misma sensación cada vez que leo la mayoría del código escrito por mí mismo en el pasado. Esto es bueno, significa que su conocimiento y estilo de codificación han mejorado con los años.

En cuanto a cambiar el código de producción de trabajo, es un gran no-no, a menos que haya detectado errores obvios. No solo porque puede ser una pérdida de tiempo, sino más importante, ya que la mayoría de los errores de software creados son del tipo que se introduce cuando se realizan cambios en los programas publicados. Estadísticamente es probable que introduzcas errores imprevistos. Si no está roto, no lo arregles.

    
respondido por el user29079 23.01.2012 - 16:13
1

Desarrollar una aplicación significa mejorarla y mejorarla; Este es un proceso continuo, por lo que mientras está programando, adquiere más experiencia y conocimiento. También significa que también estás desarrollando, por lo que cuando mires hacia atrás a tu código anterior, puedes descubrir que puede mejorarse.

Si no tienes este sentimiento, significa una de estas dos cosas:

  1. Todavía estás en el mismo nivel de habilidad.
  2. Su código ya es perfecto (improbable).
respondido por el CVist 01.02.2012 - 23:36

Lea otras preguntas en las etiquetas