... y codificó la funcionalidad "manualmente"?
Como un ejemplo bastante metafórico, difícilmente necesitaría 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 uno visto recientemente en SO: ¿cómo asigno un href vacío a una a
etiqueta con jQuery? Resultó que era una pregunta HTML, ni siquiera JavaScript.
Otro caso absurdo y aún no obvio para muchos es el uso de un motor / lenguaje de plantillas construido sobre otro sistema de plantillas: PHP. Tercer nivel de plantilla de alguien?
Y otra: a veces simplemente escupir XML (figurativamente) printf
es mucho más fácil que hacerlo con un monstruoso motor XML.
¿Algún otro caso de tu experiencia?
fuente
Respuestas:
Gran parte de la biblioteca empresarial de MS y la mayoría de los controles de terceros para .net me han dejado con esta sensación después de un poco de uso.
Su experiencia puede ser diferente
fuente
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í. Imagina que la configuración XML es aproximadamente cuatro veces más larga que el código real que escribes, y aún es muy difícil escribir servicios SOAP que sean interoperables entre C #, Java, PHP, Python y todos esos otros lenguajes que "se suponía que debían" ser interoperable con ...
En todos los proyectos futuros, solo me quedaré con REST.
fuente
Uno de los problemas que he experimentado con las personas que "hacen lo suyo" es que, si bien su enfoque suele ser más rápido y sencillo, también es más probable que sea frágil, tenga errores, esté incompleto y / o contenga fallas de seguridad .
Ejemplo simple: puede ser 10 veces más fácil usar printf para emitir XML que usar una biblioteca:
pero te acordaste de escapar de los personajes especiales
str
? Por ejemplo '<
' y '&
'? Algunas personas pueden decir "no, no lo hice" y proceder a escribir esto:Pero aún emitirá XML roto si
str
contiene la subcadena "]]>
" en cualquier lugar. Estuche de borde, claro. Pero sigue siendo un escenario válido que podría conducir a problemas inesperados con graves consecuencias.Hay muchos momentos y lugares en los que "rodar el tuyo" puede ser apropiado, pero a veces se necesita mucha experiencia y conocimiento para identificar cuándo es apropiado. Es por eso que a menudo animo a los programadores a preferir el uso de bibliotecas establecidas (donde estén disponibles) en lugar de rutinas auto implementadas.
fuente
Log4Net
La biblioteca es buena, pero la documentación es horrenda. Fue excesivo para lo que quería hacer.
Solía traza en su lugar.
fuente
SharePoint
No me malinterpretes, SharePoint es increíble si necesitas la mayoría de las cosas con las que viene (¡y viene con muchas!), Pero si no sabes lo que estás haciendo o solo lo necesitas para uno o dos cosas, MASIVAMENTE no vale la pena el esfuerzo y la configuración.
fuente
ASP.NET WebForms : aunque como desarrollador web .NET ha sido mi pan de cada día 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 mejores formas de hacer desarrollo web y la abstracción que utiliza es exagerada y permeable .
fuente
En casi todos los casos que hice esto, terminé arrepintiéndome:
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 son desarrollados y depurados por otra persona, lo que es un ahorro de tiempo increíble una vez que los haya estandarizado y los entienda bien.
fuente
System.Text.RegularExpressions
Regex es tan complejo y tan lento. Muy rara vez usaré Regex y generalmente escribiré mi propio análisis y coincidencia de texto.
Ocasionalmente, encontraré que Regex es útil para una combinación realmente compleja.
fuente
No es que Delphi4PHP necesite mala prensa, pero lo probé (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 capacitación, pero era demasiado engorroso y cuando intenté combinar marcos PHP (VCL4PHP, Zend, Smarty y Recess) me encontré con el inevitable cambio de nombre todo porque no hay espacios de nombres en el problema PHP 5.
Dicho esto, al final no hice el mío. Solía aprender de mis errores y decidí mantenerlo muy simple y usar CodeIgniter y FlowPlayer (con JQuery).
Tengo un anhelo de que, independientemente de los frameworks que salgan vivos de PHP 5, PHP 6 tendrá algunos frameworks increíbles que en realidad podrían funcionar bien juntos.
fuente
Weka
Hago mucho 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 automático bastante complicados, pero la API es una API Java cruda y excesivamente orientada a objetos de la vieja escuela (pre-genéricos). Cosas que me molestan al respecto:
Enrolla su propia matriz redimensionable que nada más utiliza, lo que garantiza la conversión de trabajo ocupado de un lado a otro.
Un montón de acoplamiento secuencial donde los métodos tienen que llamarse en un orden específico y, a menos que realmente RTFM sea cuidadoso, no se dará cuenta.
Cada instancia debe ser un objeto Instance, y tengo que declarar explícitamente con un objeto Attribute si es nominal o numérico. Esto lleva a una gran cantidad de trabajo ocupado que convierte los datos a la forma que Weka quiere. Esto es especialmente molesto ya que la API de Weka arroja tantas excepciones que la compilación de código no significa que sea probable que funcione de todos modos. Si estuviera diseñando la API, sería liberal en lo que acepté (tal vez solo tome una matriz de objetos) e introspeccione los datos para averiguar qué obtuve y qué es lo que debo hacer con ellos.
fuente
En un proyecto en particular, abandoné EJB3. Me dio inyección de dependencia y manejo de transacciones gestionadas por contenedor. Pero introduce enormes dependencias (por ejemplo, JBoss) y hace que el sistema sea difícil de escribir para pruebas automatizadas. Ahora lo he reducido a inyección de dependencia de constructor JPA +.
fuente
Escupir HTML en un puerto de depuración en una aplicación. Necesitaba alguna forma simple de obtener algunos datos actuales (con actualización automática). Colocar una biblioteca para formatearlo hubiera sido bueno, pero fue más fácil imprimirlo.
También rechacé en la biblioteca por otra: utilizamos una biblioteca XML grande y compleja en la mayoría de nuestras cosas. Después de pasar 4 horas un día tratando de que funcione en una nueva aplicación, solo dije 'embolsarlo' y utilicé TinyXML. No es tan poderoso, pero se necesita MUCHO menos esfuerzo para que haga cosas simples.
fuente
Recientemente he estado trabajando en un compilador de lenguaje de script que puedo usar dentro de mis aplicaciones. He usado otros, pero ninguno hace exactamente lo que necesito que hagan. Entonces pensé, ¿por qué no tratar de escribir el mío? Puede pasar un año o dos antes de que sea realmente adecuado para uso general, pero está bien. Además, es una gran experiencia de aprendizaje.
Otra solución 'rodar mi propia' son las piezas utilizadas para traducir mis aplicaciones. Hay bibliotecas existentes, pero no me gustó ninguna de ellas. Entonces hice el mío.
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 manera en que quiero que funcione (y exactamente como la que hice para PHP, lo que facilita la codificación entre idiomas).
Básicamente, cuando se me da una opción, generalmente termino haciendo mi propia biblioteca.
fuente
Ohhh, muchos. He trabajado en varios proyectos ágiles utilizando apis de código abierto. Genial cuando funcionan, pero a menudo hemos sufrido desarrolladores con un fetiche por traer todo tipo de API de terceros, algunas oscuras, otras no, solo porque quieren usar una o dos clases en ellas. El resultado final es una mezcla de código y sistemas pirateados. Lo entregan alegando que es el mejor código de la historia, se van y los pobres vagos que lo recogen encuentran un lío ininteligible e indocumentado lleno de problemas de dependencia y piratas.
fuente