2010-07-13 7 views
6

Casi en todas partes donde trabajé conocí a mucha gente a la que no le importaba que produjeran cantidades masivas de código repetitivo.Falta de disposición para ver el código repetitivo como un problema importante? ¿Por qué? Contramedidas?

Para mí, esta es una de las peores cosas de la historia, conduce a errores, es aburrida y aumenta el ruido.

El peor ejemplo puede ser incluso la falta de voluntad de Microsofts para darnos una mejor sintaxis para este molesto "INotifyPropertyChanged" - cosas. No puede usar las propiedades generadas automáticamente, tiene que crear una gran redundancia (replicando el nombre de la propiedad en la llamada a "OnPropertyChanged" o cualquiera que sea el método que se llame).

Algunas personas llegan incluso a aceptar que la mayoría de los programas en muchos lenguajes de programación consisten principalmente en el mismo código repetido (ruido), cosas no interesantes (señal). Ver MSDN - ejemplos, por ejemplo, hay tanto código innecesario y repetido en todas partes (el horrible "INotifyPropertyChanged" - patrón que arruina todo el flujo siendo solo la punta del iceberg).

Sin embargo, cuando planteo este problema y propongo soluciones como AOP (PostSharp.NET) o el uso de delegados (para los que no usan C#: funciones anónimas, a menudo realizadas con un operador lambda), todo lo que obtengo es " no me importa ".

Alguien más aquí preocupado por la gran cantidad de ruido introducido por el código repetitivo y ¿quién quiere pensar en formas de impulsar las soluciones a la plantilla repetitiva?

Respuesta

9

Por lo que vale, estoy completamente de tu lado.

La gente repetitiva argumenta que el código repetitivo y redundante es "automático" o "coherente" y, por lo tanto, no contribuye a la complejidad del código. A menudo, cuando un lenguaje obliga a los desarrolladores a crear un modelo repetitivo, la industria crea IDE y otras muletas para automatizar el proceso. Luego, cuando el costo aparente de producir ese código repetitivo se acerca a cero, la gente piensa que no cuesta nada.

Son incorrectos: el código repetitivo contribuye al código en bloque, y cualquiera que mantenga el código tiene que buscar el código irrelevante para obtener las partes importantes. Además, dado que el código generado automáticamente puede editarse, puede ocultar errores introducidos por errores tipográficos, cambio de nombre incompleto u otros accidentes. El costo del código repetitivo no está en su creación, sino en su mantenimiento, que muchos proyectos intentan ignorar por completo.

En los años 80, vi mags comercializados con anuncios de depuradores de pérdida de memoria para C++, y fue una señal obvia para mí que la gestión de memoria en C++ se ha roto seriamente. Ahora, en las cercanías de Java y C#, veo una proliferación de asistencias de generación de código, y eso me indica que esos lenguajes tienen problemas que podrían resolverse mejor en otro lugar.

Scala tiene problemas propios, pero me encanta lo que han hecho con las propiedades y los constructores de autoinicialización.

+1

Exactamente, así es como me siento al respecto. La cantidad de código repetitivo (tengo un nombre diferente para él: "código s ***", así es como lo llamo en la vida real) en C# a veces es abrumador ... :-( –

+1

Exactamente. A veces, el más desalentador Lo que pasa con una base de código es el gran volumen de código. – dsimcha

5

Just kill'em. No, realmente, si alguien escribe un código repetitivo y no le interesa mejorarlo, dudo que podamos llamarlo profesional. A menudo ocurre que la gerencia quiere ver que las tareas se realicen rápido y lo único que queda es enviar un código repetitivo solo de escritura para hacerlos felices. Si su administración fomenta dicho enfoque, cambie su trabajo.

Cuestiones relacionadas