¿Cuándo reescribe una aplicación desde cero?

El “buen código” no es necesariamente óptimo para todos los proyectos.

Me escuchaste bien … un buen código no es necesariamente un código óptimo para las necesidades comerciales. Me gusta pensar en una codificación adecuada, digamos de procedimiento frente a OO en este ejemplo, como una compensación entre los costos fijos y variables. Claro, la refactorización podría mejorar el código en general, pero ¿puede darse el tiempo para reescribir todo desde cero? ¿Es esto algo trivial y prevé solo algunas modificaciones más o es algo que se actualizará constantemente indefinidamente en el futuro?

Solo como ejemplo, tuve un cliente propietario de una empresa de gestión de buques que ganó millones de dólares con una base de datos de MS Access porque pudieron llegar al mercado más rápido que su competencia. En lugar de expresiones regulares, hubo innumerables evocaciones de midstr e instr. Fue bastante asqueroso. 🙂 Cuando me hice cargo de su base de datos, rápidamente me di cuenta de que reescribir la aplicación desde cero habría quitado demasiado tiempo y recursos de las otras necesidades tecnológicas de la empresa, por lo que lentamente refactoré todo en código orientado a objetos, y luego lo transfirí todo. NET cuando todo se estaba poniendo demasiado. Refactorizar un poco a la vez permitió la transición más fácil en lugar de reescribir nada desde cero.

En resumen, 1. piratear algo juntos no siempre es lo peor del mundo (los codificadores puros pueden decirle lo contrario. Están equivocados). 2. Haga un análisis del costo fijo del tiempo del proyecto. 3. Encuentre una manera de refactorizar lentamente partes del proyecto, luego vuelva a escribir cuando el costo variable de las modificaciones realmente supere el costo de reescribir todo desde cero.

Recomiendo leer las cosas de Joel que nunca debes hacer, Parte 1 ( http://www.joelonsoftware.com/ar …). Si bien puede ser menos aplicable a la pregunta, como usted dice que es un “pequeño proyecto”, sospecho que aún podría aplicarse.

Entonces, en cambio, es mejor que pases tiempo refactorizando y limpiando cosas, para que luego puedas dividir el código en módulos y partes más pequeños. A partir de ahí, la reescritura debería ser más fluida y, finalmente, el código mejorará.

Acabo de escribir una publicación titulada “Por qué debería (casi) nunca reescribir: una guía gráfica” aquí http: //vibratingmelon.wordpress… .
Mi conclusión es que una reescritura generalmente tiene un costo mucho mayor de lo esperado y, a menudo, un resultado fatal. Se deben evitar las reescrituras en todas las situaciones, excepto en algunas muy específicas, cuando ningún otro enfoque sea viable.

More Interesting

¿Cuánto más rápido es CoreFoundation que Cocoa / Cocoa Touch?

Como contratista de software, ¿cuándo puedo dejar de trabajar en un proyecto? No se firmó papeleo.

¿Qué desafíos enfrenta como único escritor técnico en su empresa que sigue el modelo Agile para el desarrollo de software?

Estoy trabajando en un nuevo proyecto (comenzar desde cero) y estoy refactorizando mucho para mejorar mi diseño. ¿Esto es normal?

Como ingeniero mecánico, ¿debo seguir una maestría en ingeniería de software o gestión de ingeniería?

¿La metodología Agile está haciendo que el ciclo de vida del desarrollo de software sea más amigable para el cliente?

Si los SSD fueran tan baratos como el disco, ¿cómo afectaría a toda la industria de software y hardware?

Si estamos construyendo un marco de prueba automatizado interno, ¿será mejor tener uno en C # y uno en Java?

¿Qué tan bueno es CS50 en comparación con un curso universitario real sobre informática?

¿Es seguro usar Python (en lugar de C ++) para el desarrollo de software para escenarios industriales?

¿Cuáles son los desafíos que enfrentan las empresas cuando subcontratan procesos comerciales o desarrollo de software a tiendas en el extranjero?

¿Cuáles son los fundamentos para un programa de grado SE?

¿Cuáles son algunas de las cosas que los ingenieros de software indios odian más?

¿Los ingenieros de software de Silicon Valley dibujan diagramas antes de codificar o saltar y codificar?

¿Cuál es la mejor manera de comenzar a trabajar por cuenta propia para un ingeniero de software (web)?