2008-10-10 18 views

Respuesta

10

Esto es algo que he oído de un co obrero. Al parecer, se encontró con una aplicación web que hace algo como esto para el lado del cliente JavaScript validación de cuadro de texto:

  1. Javascript construye una cadena para representar el cuadro de texto del lado del cliente.
  2. envía la cadena al servidor web.
  3. servidor web utiliza la reflexión para reconstruir el cuadro de texto en el servidor de la cadena pasada.
  4. servidor web comprueba si el cuadro de texto tiene un valor.
  5. devuelve el resultado al cliente.
  6. cliente muestra el mensaje.
  7. durante el tiempo que el servidor web realiza su validación, el cliente muestra una barra de progreso.

la implementación de la barra de progreso es válida para otra publicación. :)

+0

Espera ... Estoy bastante seguro de que estás hablando de WebForms. : p –

0

imaginar un archivo de configuración que se parece a esto:

<param name="foo"> 
     <name>p1</name> 
     <name>p2</name> 
     <param name="bar"> 
      <name>q1</name> 
      <name>q2</name> 
      <name>q3</name> 
      <param name="foobar"> 
       <name>q1</name> 
       <name>q2</name> 
       <name>q3</name> 
       <parame name="barfoo"> 
       .... 
        </param> 
      </param> 
     </param> 
    </param> 

y un analizador que tiene este aspecto

int i = 0; 
while (n.hasChild("param")) 
{ 
    if (n.name()=="param") 
    { 
    process new node n 
    i++ 
    else{ 
     //add child 
    } 
} 

En caso de que se esté preguntando, la "i" se utiliza más adelante con la figura cuántos params tienes Y esta es una vista muy limpia del código extremadamente.

2

no he visto ninguna en la producción, pero se hizo un retroceso de ver Hola mundo con patrones de diseño en el siguiente sitio:

http://www.phppatterns.com/docs/design/hello_world_in_patterns

+0

Normalmente, cuando esto aparece en producción, se trata de arquitecturas complejas que abarcan varias máquinas y servicios. Lo he visto y es una locura: eliminas un pequeño código aparentemente innecesario en un producto heredado que has tenido durante los últimos 4 años (porque no conoces la valla de Chesterton), todo el examen de unidad, integración y prueba exploratoria. Luego, en el cuarto día de las pruebas de interoperabilidad de tiempo de actividad, otro producto aparentemente no relacionado se bloquea. – Assambar

4

The Daily WTF que la fuente de más programas de Rube Goldberg que podría preocuparse por leer sobre: ​​P.

0

podría ser mejor para buscar respuestas a esta pregunta una a The Daily WTF :)

0

Parece que cada conversión de datos que he hecho a partir de una base de datos FileMaker Pro me hace pensar que la base de datos fue diseñado por el propio Rube.

Veamos ... Todos los campos tienen 256 caracteres de longitud. Nombres de compañías utilizados como claves principales (¡esperar! No cambiar el nombre ...) Estructura de base de datos des-normalizada (fecha de pago1, fecha de pago2 ... fecha de pago256).

(No es que esté dissing FileMaker Pro. Es sólo que se permite a los no programadores para diseñar bases de datos que eventualmente necesitan ser convertidos en alguna otra aplicación.)

1

Cuando estaba en una conocida compañía de software de acceso remoto y antivirus, un compañero de trabajo que por alguna razón era considerado por algunos gerentes de bajo nivel como realmente excelente solía escribir todo tipo de cosas complicadas. Temía trabajar en su código. Gran parte de todo era innecesario.Finalmente tuve que conversar con él cuando descubrí que había introducido MFC en una biblioteca que anteriormente no usaba mfc (estábamos tratando de mantener esa mierda fuera de nuestro código). Al parecer, lo necesitaba para cadenas y colecciones. Le mostré stl. Él estaba muy entusiasmado con eso y parecía realmente tomar mis sugerencias en serio. Más tarde, cuando volví a mirar el código, vi que había implementado las colecciones de MFC y que había envuelto a STL con sus propias interfaces para que parecieran colecciones de mfc. Guau. simplemente guau.

Otro desarrollador totalmente inútil en la misma compañía aparentemente no le gustó usar la herencia en C++, a pesar de que copió páginas de "Effective C++" para dar como pruebas a posibles contrataciones. De todos modos, durante una revisión del código, una de las personas que me informó me preguntó por qué Pete estaba usando #ifdefs en su código en todo el lugar. Su proyecto se compilaría 4 veces y cada vez definiría una palabra clave diferente. El código condicional era para un comportamiento específico y todo el otro código era para una funcionalidad similar. Me quedé asombrado. Y este tipo también se pensó que era un chico de oro. Sin más, causó una nueva publicación de un producto porque dejó un mensaje de error en un proceso de servicio de win32, colgando el servicio porque se negó a aprender a usar el depurador de nivel de origen, pero esa es otra historia.

3

Desde dispositivo de Duff ha sido popular hoy aquí, creo que es apropiado tan complicado código de hacer algo simple:

dsend(to, from, count) 
char *to, *from; 
int count; 
{ 
    int n = (count + 7)/8; 
    switch (count % 8) { 
    case 0: do { *to = *from++; 
    case 7:  *to = *from++; 
    case 6:  *to = *from++; 
    case 5:  *to = *from++; 
    case 4:  *to = *from++; 
    case 3:  *to = *from++; 
    case 2:  *to = *from++; 
    case 1:  *to = *from++; 
       } while (--n > 0); 
    } 
} 

Tenga en cuenta que en realidad es muy eficiente, en comparación con:

do {       /* count > 0 assumed */ 
    *to = *from++;   /* Note that the ''to'' pointer is NOT incremented */ 
} while (--count > 0); 

Sin embargo , la gran elegancia de depender del cambio de interruptor de C hace que sea digno de Rube.

+1

El dispositivo de Duff también es obsoleto en la actualidad. Los compiladores a menudo desenrollarán esos loops por usted. –

0

No es muy largo, pero sigue siendo ridículo. Para borrar un StringBuilder:

If sb.Length > 0 Then 
    sb.Remove(0, sb.Length) 
End If 
4

Uno de nuestros programadores jóvenes una vez escribió lo que se supone que es un simple cuadro de texto AJAX ified sugerencia automática para buscar cuentas de usuario en una de nuestras aplicaciones.

Esta fue su proceso:

  1. Run SELECT * FROM Users contra la base de datos
  2. devolver los resultados completos en un método de servicio GetAllUsers() web
  3. bucle a través de los resultados XML en Javascript para encontrar nombres que coinciden con los caracteres escritos hasta el momento y agrégalos a una matriz
  4. Pasa por la matriz para crear la lista desplegable de sugerir automáticamente
  5. Repite toda pr oceso para la siguiente carta escrita a máquina ...

En realidad, esto funcionó bastante bien cuando se puso a prueba con 10 usuarios de ejemplo, pero llevó al sistema a un alto cuando se ejecuta contra un equipo de prueba completa de los 3000 usuarios.

0

Una vez heredé una aplicación que manejaba los archivos de configuración de una manera rubegoldbergian. La configuración era un simple archivo XML de texto sin formato, con las claves y los valores completamente legibles por humanos.Al inicio, la aplicación abriría el archivo XML, iteraría a través de todos los pares clave/valor, cifraría la clave y el valor de cada uno, crearía un hash de la clave cifrada y agregaría el par clave/valor encriptado a una tabla estática.

La función para leer un ajuste tomó una clave de cadena normal y devolvió un valor de cadena ordinario, por lo que tuvo que encriptar la clave, hash y usar el hash para localizar el par clave/valor en la tabla hash, y luego descifrar y devolver el valor.

Llamamos a esto cifrado en memoria. Todavía no tengo idea de qué tipo de procesos de pensamiento condujeron a su creación, pero pensé en Mousetrap en el momento en que lo vi.

0

Encontrado esto en stackoverflow, Enterprise FizzBuzz. El mejor ejemplo que he visto de tomar un problema simple y poner demasiado código de "empresa" a su alrededor.

Cuestiones relacionadas