2010-04-13 4 views
10

Vi this question y me recordó AutoGenerateColumns en el antiguo DataGrid. Las pocas veces que los utilicé, terminé por dar marcha atrás porque necesitaba un formato de datos más allá del estándar "escupir las columnas del origen de datos". Del mismo modo, al alternar, parece que ahorraría tiempo, pero luego necesita seguir el estado o algo más, y reescribe el código en consecuencia.¿Qué atajos de programación terminas lamentando o retrocediendo?

¿Hay cosas que terminan usando pensando que le ahorrarán tiempo, pero terminan retrocediendo porque no hace lo que necesita?

+0

Las columnas bien autogeneradas realmente solo son útiles para el andamio, no me puedo imaginar que alguna vez lo usarías seriamente en producción. – Juliet

Respuesta

5

Realice una pequeña mejora en un sistema de trabajo existente y no lo cubra con pruebas.

Por muchas veces terminó con la depuración del infierno. Lo peor de todo fue que mis colegas no fueron mis amigos.

3

Creo que la respuesta obvia para el "atajo" de programación más lamentable sería gotos.

Pero en cuanto a los marcos, creo que todos los marcos pueden ser una trampa a veces. No están mal de usar, pero no creo que encuentres un marco que no te obligue a comprar un tiempo de desarrollo reducido con una capacidad de mantenimiento reducida. Trabajo principalmente con Drupal, y cada vez que sale una nueva versión tengo que reescribir al menos parte de mi código personalizado ... pero ese es el precio que pago por poder agregar nuevas funciones rápidamente con los módulos de la comunidad, y para mí, vale la pena. Para un conjunto diferente de propósitos o aplicaciones, ciertamente no valdrá la pena.

+4

-1 para bashing goto. Si el mundo fuera perfecto y la recursión fuera implementada y respaldada por completo en todos los lenguajes de programación (la pila se expande dinámicamente, la recursión de cola está optimizada, se admiten corutinas o continuaciones, etc.), cualquier programa podría escribirse elegantemente sin gotos. Si uno está tratando de evitar la recursión, goto es a menudo la forma más simple de implementar una máquina de estado (y no me digas que cambiar/caso es mejor, es más detallado). Mi biblioteca JSON utiliza máquinas de estado basadas en goto en muchas de sus funciones: http://constellationmedia.com/~funsite/static/json-0.0.2/json.c –

+1

+1 para frameworks, y no tocaré el argumento "goto". – bmb

+0

+1 por la nota en marcos, aunque :) (bah, SO no me deja cambiarlo) –

2

Dejar que Visual Studio realice la vinculación de datos. Funciona la mayor parte del tiempo, pero a veces introduce errores sutiles que requieren mucho más tiempo para encontrar y resolver que hacerlo manualmente.

+0

Obtengo databinding manualmente para web. Pero uf, no puedo imaginar hacerlo para una aplicación de cliente gorda. Creo que me volvería loco si tuviera que escribir código de enlace de datos todo el tiempo. :) – Tony

1

El uso excesivo de macros C/C++. Sin embargo, creo que es una trampa en la que los grandes proyectos pueden caer en más proyectos que pequeños.

+2

Desafío: descubra dónde se implementa putchar en glibc. –

3

Cada proyecto web grande que comienza con una gran cantidad de modularidad generalmente va demasiado lejos para el alcance de la aplicación que finalmente se construirá.

Por lo tanto, la capa web llama a una interfaz de delegado llamadas llamadas de implementación de delegado llamadas de interfaz de servicio llamadas de implementación de servicio llamadas de interfaz dao implementación dao y así sucesivamente.

Y, finalmente, como no hizo la distribución en este nivel, observa que todas las implementaciones de delegado son una línea de código, y las saca para mayor claridad, después de perder un poco de eficiencia escribiendo cien clases de delegados en primer lugar.


O: la mayoría de los proyectos en un momento u otro masivamente sobreestiman lo grande que será base de usuarios de la aplicación, y por desgracia, el código para que en lugar de codificar de manera más eficiente. Una aplicación de libro de recetas con 200 usuarios es mucho más común de escribir que una aplicación que define la industria con cien mil usuarios todas las mañanas, pero los desarrolladores tienden a codificar parte, pero no toda, de su aplicación para el caso improbable.

Si está escribiendo hello world, simplemente escriba el código y agréguelo más tarde según sea necesario.

+1

Dean J, parece que estás describiendo lo opuesto a los "accesos directos" de los que terminas arrepintiéndote. Haces puntos excelentes, pero esos parecen longcuts ... – bmb

+0

Fueron diseñados como atajos a largo plazo; hacer que el código sea más fácil de mantener en general. Terminaron siendo errores a corto y largo plazo. Oops? –

1

No es exactamente un acceso directo, sino: Escribir una clase de cadena C++ sin siquiera considerar la posibilidad de que alguien más haya tenido la misma idea.Sin embargo, fue un buen ejercicio, ya que me enteré de que:

  • Escribir una biblioteca no hace que toda la programación sea cuesta abajo desde allí. Puede ser más fácil tener una biblioteca a mano, pero si es más difícil comprender la semántica de la biblioteca que implementar la funcionalidad a mano, la biblioteca puede resultar bastante inútil.
  • C++ tiene muchas características realmente buenas.
  • C++ siempre falta esa característica que realmente necesito.
+0

A menudo encuentro una biblioteca que parece que hace lo que necesito, y luego en la práctica es torpe, lenta, etc. Cuando descubro cómo arreglar el código de otra persona, termino deshaciéndolo y escribiendo lo mío de todos modos. No parece tomar más o menos tiempo, de cualquier manera hay una curva de aprendizaje y experimentación antes de que se haga de la manera que lo desee. – Kev

+0

@Kev: suena como lo que pasé escribiendo mi biblioteca JSON. –

+0

¿Cómo es reinventar una rueda sobre reinventado? – Victor

2

Copiar/pegar unas pocas líneas de código que son similares a, pero no exactamente las mismas que el código que necesita en este momento, casi siempre dará como resultado un error en ese código.

Casi siempre es mejor simplemente escribirlo carácter por carácter, obligándote a considerar cada uno de ellos. Pero sigo haciéndolo, pensando: "qué podría salir mal" y lamentando la decisión más tarde.

+0

Es mejor resumirlo lo suficiente para que no tenga un código duplicado: P – Earlz

+0

no puede resumir todas las líneas de código: p –

2

Usando la característica más reciente y mejor de < inserte el marco aquí > solo para que falle y tome más tiempo.

Estoy totalmente de nuevas características, pero utilizarlas demasiado pronto puede ser problemático.

+0

+1 - ¡Sí! Entity Framework, ¡te estoy mirando! – John