He tenido algunos de los que estoy orgulloso y algunos de ellos fueron escritos por mí hace unos años. No tiene que ser necesariamente con errores, solo código incorrecto.
code-quality
bug
code-smell
James
fuente
fuente
Respuestas:
No sé si estar orgulloso de la solución porque era muy obvio, pero el código más horrible que recuerdo fue el siguiente.
Aparentemente, el desarrollador anterior seguía agregando nuevas líneas cada vez que un nuevo usuario (generalmente irlandés) comenzaba a recibir errores en la aplicación.
Lo dejaré como un ejercicio para la clase sobre cómo se solucionó.
fuente
UserName='John O''Reily'
se volveríaUserName='John OReily'
(como cómo C concatena literales de cadena adyacentes), pero no pensé en lo que faltaba'
:(Realmente no debería estar orgulloso de esto, pero por alguna razón, fue satisfactorio.
Aparte de tener COBOL en la escuela, no tenía experiencia, pero era un hombre bajo en el tótem, y necesitábamos proporcionar el código fuente de compilación a un proveedor externo para la verificación de Y2K. Teníamos un solo archivo COBOL con múltiples rutinas que se llamaban entre sí en el archivo, tipo espagueti, y era demasiado grande para cargarlo en nuestro IDE actual para compilarlo. Necesitaba separarse en al menos dos archivos físicos, y esos archivos, por supuesto, necesitaban tener todo lo que necesitaban en su propio archivo. (O tal vez, había una manera de vincularlos, pero realmente no conocía COBOL).
De todos modos, tomé este archivo de aproximadamente 100,000 líneas, y separé suavemente las docenas y docenas de rutinas para encontrar dos conjuntos de rutinas que eran independientes entre sí, y por lo tanto podrían existir en dos archivos separados, cada uno de aproximadamente 50,000 líneas. (Creo que el máximo que el compilador podía manejar era de aproximadamente 80,000 líneas, por lo que necesitaba ser bastante parejo).
Estaba leyendo un idioma antiguo que no sabía, y todavía tenía éxito en la tarea.
fuente
Saqué un cursor de un gatillo y reduje el tiempo para insertar 40,000 nuevos registros de una hora a menos de un minuto. Finalmente, esto me permitió insertar 21 millones de registros en algo menos que tiempo glacial, pero nunca intentamos la importación de 20 millones de registros hasta después de la corrección, por lo que no tengo estadísticas sobre cuánto tiempo ahorramos.
fuente
Había una clase base para crear cuadros de diálogo de confirmación para diferentes operaciones en nodos de árbol. Solo necesitaría proporcionar un mensaje para que se muestre en el cuadro de diálogo y la acción a ejecutar si se confirmó. Buen sistema, pero no permitió un manejo especial en caso de que no haya seleccionado un nodo de árbol. Como resultado, el texto en uno de los cuadros de diálogo decía: "Seleccione no". Si seleccionó sí, arrojó una excepción. Muy buena experiencia de usuario, de hecho.
Lo arreglé deshabilitando las operaciones no válidas.
fuente
Lo peor que he visto fue un código Java para extraer oraciones clave de un corpus de texto.
Para ser justos, esto no es nada en comparación con algunas de las cosas que están allí, pero todavía hay una gran diferencia en la calidad antes y después. Considere el siguiente código real antes y después de una función:
Antes (¡intenta averiguar qué hace antes de mirar Después!):
Después:
fuente
Mi primer trabajo de programación fue escribir instaladores en InstallShield. Heredé un script que tenía miles de líneas sin funciones , solo gotos. Fue alucinante. Lo reescribí, lo hice todo bonito y modular y basado en datos, para que me pudieran dar binarios / arte / etc. y obtener un nuevo instalador en menos de una hora, en lugar de la semana que le llevó al tipo anterior. Estaba muy orgullosa de mí misma.
fuente
Creo que nada se acerca a esto :
¿La solución? Eh, eso no debería requerir mucha explicación.
fuente