¿Qué biblioteca / marco abandonó por ser demasiado complejo para el problema que está resolviendo? [cerrado]

12

... y codificó la funcionalidad "manualmente"?

Como ejemplo bastante metafórico, difícilmente necesitarías una biblioteca para resolver ecuaciones cuadráticas, aunque tales bibliotecas existen y alguien las toma en serio.

Como un caso más cuestionable, dependiendo de las circunstancias, puedo deshacerme de jQuery (por ejemplo, cuando no necesito admitir algunos navegadores de la Edad de Piedra): simplifica algunas cosas pero agrega otra capa de complejidad y falta de confiabilidad al DOM . Y el uso excesivo de jQuery conduce a problemas absurdos, como el que se vio recientemente en SO: ¿cómo asigno un href vacío a una etiqueta a con jQuery? Resultó que era una pregunta HTML, ni siquiera JavaScript.

Otro caso absurdo y, sin embargo, poco obvio para muchos es el uso de algún motor / lenguaje de plantillas construido sobre otro sistema de plantillas: PHP. Tercer nivel de plantillas a alguien?

Y otro: a veces simplemente escupir XML con (figurativamente) printf es mucho más fácil que hacerlo con un motor XML monstruoso.

¿Algún otro caso de tu experiencia?

    
pregunta mojuba 05.11.2010 - 21:57

14 respuestas

14

Gran parte de la biblioteca empresarial de MS y la mayoría de los controles de terceros para .net me han dejado este sentimiento después de un poco de uso.

Su kilometraje puede variar

    
respondido por el Bill 05.11.2010 - 22:16
13

Windows Communication Foundation

El hecho de que tenga una foto de una navaja suiza en la página de inicio lo resume todo para mí. Imagine que la configuración XML es aproximadamente cuatro veces más larga que el código real que escribe, y es todavía muy difícil escribir servicios SOAP que sean interoperables entre C #, Java, PHP, Python y todos esos otros idiomas que se suponía que debía ser interoperable con ...

En todos los proyectos futuros, solo me quedo con REST.

    
respondido por el Dean Harding 05.11.2010 - 23:42
12

Uno de los problemas que he experimentado con las personas que se "enrollan por su cuenta" es que, si bien su enfoque suele ser más rápido y sencillo, también es más probable que sea quebradizo, tenga errores, esté incompleto y / o contienen fallas de seguridad.

Ejemplo simple: podría ser 10 veces más fácil usar printf para emitir XML que para usar una biblioteca:

printf("<xml>%s</xml>", str);

¿pero recuerdas escapar de los caracteres especiales en str ? Por ejemplo, ' < ' y ' & '? Algunas personas pueden decir "no, yo no lo hice" y proceder a escribir esto:

printf("<xml><![CDATA[%s]]></xml>", str);

Pero seguirá emitiendo XML roto si str contiene la subcadena " ]]> " en cualquier lugar. Caso de Edge - seguro. Pero sigue siendo un escenario válido que podría dar lugar a problemas inesperados con graves consecuencias.

Hay muchas ocasiones y lugares donde "rodar los tuyos" puede ser apropiado, pero a veces se necesita mucha experiencia y conocimiento para identificar cuándo es apropiado. Es por eso que a menudo recomiendo a los programadores que prefieran usar bibliotecas establecidas (donde estén disponibles) en lugar de rutinas auto-implementadas.

    
respondido por el Mike Clark 06.11.2010 - 23:03
11

Log4Net

La biblioteca es buena, pero la documentación es terrible. Era una exageración por lo que quería hacer.

Utilicé Trace en su lugar.

    
respondido por el Robert Harvey 05.11.2010 - 22:05
7

SharePoint

No me malinterpretes, SharePoint es increíble si necesitas la mayoría de las cosas que vienen con (¡y vienen con mucho!), pero si no sabes lo que estás haciendo o solo lo necesitas para Una o dos cosas, es MASIVAMENTE que no vale la pena el esfuerzo y la configuración.

    
respondido por el Ryan Hayes 08.11.2010 - 16:25
6

ASP.NET WebForms - Aunque como desarrollador web .NET ha sido mi pan y mantequilla durante mucho tiempo, desde que comencé a usar el marco MVC (y provenía de un entorno de Plantilla PHP / Smarty) - te das cuenta de que a veces hay formas mejores de hacer el desarrollo web y la abstracción que utiliza es excesiva y leaky .

    
respondido por el Watson 05.11.2010 - 22:33
3

En casi todos los casos que hice esto, terminé lamentándolo:

  • Usar las funciones oci_ * de PHP en lugar de una biblioteca de envoltura resultó ser un mal movimiento debido a la capacidad de mantenimiento del código. Portar todo el código a Zend_Db hizo que el desarrollo del mantenimiento del código de la base de datos fuera mucho más fácil.
  • Rodando mi propio componente de rejilla de ajax, que tomó demasiado tiempo para desarrollarse más, dada la rapidez con la que evolucionan algunos de los otros componentes de la red. Actualmente lo estoy transfiriendo todo a las redes de Ext JS porque con esas hay una gran cantidad de funcionalidades de terceros disponibles.
  • Evitar bibliotecas como prototype y jquery provocó repetidas ocasiones de problemas en varios navegadores, a menudo difíciles de rastrear. El puerto Ext JS ha resuelto mis problemas en varios navegadores. Es mágico, incluso si se trata de un vasto marco que me llevó semanas comprenderlo.

Llegué a la conclusión de que es mucho mejor elegir algunos marcos confiables de terceros y usarlos como base para todo lo que haces. Esos marcos han sido desarrollados y depurados por otra persona, lo que supone un ahorro de tiempo increíble una vez que los has estandarizado y los comprendes bien.

    
respondido por el Joeri Sebrechts 06.11.2010 - 22:43
2

System.Text.RegularExpressions

Regex es tan complejo y tan lento. Muy rara vez usaré Regex y, por lo general, escribiré mi propio análisis y comparación de texto.

Ocasionalmente, encontraré Regex útil para una coincidencia realmente compleja.

    
respondido por el Chris Persichetti 05.11.2010 - 22:34
2

No es que Delphi4PHP necesite ninguna mala impresión, pero lo intenté (versión 2.0) y fue extremadamente difícil doblarlo a mi voluntad. Quería usarlo para hacer una aplicación web de estilo youtube para que los clientes vieran videos de entrenamiento, pero era demasiado engorroso y cuando lo probé para combinar marcos PHP (VCL4PHP, Zend, Smarty y Recess) me topé con lo inevitable, tengo que cambiar el nombre Todo porque no hay espacios de nombres en el problema de PHP 5.

Dicho esto, al final no hice mi propio rollo. Simplemente aprendí de mis errores y decidí mantenerlo muy simple y usar CodeIgniter y FlowPlayer (con JQuery).

Tengo ganas de que, independientemente de los marcos que salgan de PHP 5 con vida, PHP 6 tendrá algunos marcos impresionantes que podrían funcionar bien juntos.

    
respondido por el Peter Turner 05.11.2010 - 22:37
2

Weka

Hago un montón de trabajo de aprendizaje automático, y si alguna vez necesito algo simple como Naive Bayes o regresión logística, me encanta deshacerme de Weka. Tiene buenas implementaciones de algunos algoritmos de aprendizaje de máquina bastante complicados, pero la API es una API de Java de la vieja escuela (pre-generica) excesivamente orientada a objetos y muy desarrollada. Cosas que me molestan al respecto:

  1. Tira su propia matriz de tamaño variable que nada más utiliza, lo que garantiza que los trabajos se conviertan de un lado a otro.

  2. Un montón de acoplamiento secuencial donde los métodos deben llamarse en un orden específico y, a menos que realmente realice RTFM, no se dará cuenta.

  3. Cada instancia tiene que ser un objeto de instancia, y tengo que declarar explícitamente con un objeto de atributo, ya sea nominal o numérico. Esto lleva a un montón de trabajo de conversión de datos a la forma que Weka quiere. Esto es especialmente molesto ya que la API de Weka produce tantas excepciones que la compilación de código no significa que es probable que funcione de todos modos. Si estuviera diseñando la API, sería liberal en lo que acepté (tal vez solo tome una variedad de Objeto) y solo introspeccionaría los datos para averiguar qué obtuve y qué es lo correcto que hacer con eso.

respondido por el dsimcha 06.11.2010 - 00:01
2

En un proyecto en particular, abandoné EJB3. Me dio la inyección de dependencias y el manejo de transacciones gestionado por contenedor. Pero introduce enormes dependencias (por ejemplo, JBoss) y hace que el sistema sea difícil para escribir pruebas automatizadas. Ahora lo he reducido a JPA + inyección de dependencia del constructor.

    
respondido por el Conor 08.11.2010 - 16:22
1

Escupir HTML en un puerto de depuración en una aplicación. Necesitaba alguna forma sencilla de obtener algunos datos actuales (con actualización automática). Tirar de una biblioteca para formatear hubiera sido bueno, pero era más fácil simplemente imprimirlo.

También he rechazado en la biblioteca por otra: usamos una biblioteca XML grande y compleja en la mayoría de nuestras cosas. Después de pasar 4 horas un día tratando de hacer que funcionara en una nueva aplicación, solo dije 'empaquetarlo' y metí TinyXML. No es tan poderoso, pero requiere mucho menos esfuerzo para que haga cosas simples.

    
respondido por el Michael Kohne 05.11.2010 - 22:21
1

Recientemente he estado trabajando en un compilador de lenguaje de scripting que puedo usar dentro de mis aplicaciones. He usado otros, pero ninguno hace exactamente lo que necesito que hagan. Así que pensé, ¿por qué no tratar de escribir mi propia cuenta? Puede ser un año o dos antes de que sea realmente adecuado para uso general, pero eso está bien. Además, es una gran experiencia de aprendizaje.

Otra solución 'roll my own' son las piezas utilizadas para traducir mis aplicaciones. Hay bibliotecas existentes, pero no me gustó ninguna de ellas. Así que hice mi propio.

Y los componentes de la base de datos de Delphi. Los odio Siempre tengo. Así que hice mi propia interfaz de base de datos que funciona de la forma en que quiero que funcione (y exactamente como funcionó para PHP, lo que facilita la codificación en todos los idiomas).

Básicamente, cuando se me da una opción, normalmente termino haciendo mi propia biblioteca.

    
respondido por el GrandmasterB 05.11.2010 - 22:20
0

Ohhh, tantos. He trabajado en bastantes proyectos ágiles usando apis de código abierto. Genial cuando trabajan, pero a menudo hemos sufrido desarrolladores con un fetiche por traer todo tipo de apis de terceros, algunos oscuros, otros no, solo porque quieren usar una o dos clases en ellos. El resultado final es una mezcla de código y sistemas pirateados. Lo entregan diciendo que es el mejor código que existe, se van y los pobres perezosos que lo recogen encuentran un desorden ininteligible e indocumentado lleno de problemas de dependencia y trucos.

    
respondido por el drekka 09.11.2010 - 03:48

Lea otras preguntas en las etiquetas