Estoy en una situación en la que puedo usar un complemento de JavaScript de código abierto para realizar una tarea. Pero cuando traté de usarlo, descubrí que tenía que rediseñar muchas cosas de lo que ya había hecho, y agrega una cierta complejidad, en mi humilde opinión, al proyecto. Mientras que puedo lograr la misma tarea con un código limpio, puedo crearlo yo mismo y sin necesidad de cambiar lo que he hecho hasta ahora.
¿Debería optar por una biblioteca de todos modos en esta situación (como por el código de mejor calidad?)
code-quality
libraries
Billal Begueradj
fuente
fuente
Respuestas:
Como ingeniero, tal vez sea conveniente pensar en esto como un problema de optimización. Naturalmente, debemos tener un objetivo de optimización . Una situación común en este tipo de situación sería minimizar el costo total de propiedad .
Si cree que agregar el componente de terceros ahorrará costos a largo plazo, debe usarlo. Si no lo haces, no deberías. Asegúrese de considerar el costo del mantenimiento continuo (por ejemplo, cuando se lanza una nueva versión de O / S, o se encuentra una falla de seguridad, o se lanza alguna nueva especificación W3C).
Para muchos problemas triviales, será más económico hacer crecer el suyo propio, pero para problemas moderadamente complejos fuera de la competencia central de su organización, a menudo tendrá sentido ser un tercero.
También hay otros objetivos a considerar (por ejemplo, riesgo) pero el TCO es el más grande.
fuente
Bill Gates dijo una vez:
Me viene a la mente esta cita porque, en última instancia, podría decirse lo mismo para el número de bibliotecas. Como regla, no uso bibliotecas a menos que:
Idealmente se cumplen las tres condiciones, pero me conformaría con dos. La conclusión es que no debería agregar una biblioteca a su programa a menos que tenga un propósito. Si tiene que preguntar cuál es ese propósito, probablemente no debería agregarlo a su programa. La calidad del código del de su programa se beneficia porque invoca con elegancia cada biblioteca sin verse agobiada por la necesidad de reescribir necesariamente las bibliotecas dentro de su programa.
¡Buena suerte!
fuente
(Nota: la pregunta original era: ¿El número de bibliotecas mejora la calidad del código?)
Probablemente pueda responder esa pregunta usted mismo: no, por supuesto, el solo hecho de usar bibliotecas no mejora su código. Si lo hiciera, sería fácil escribir un gran código para todo sin esfuerzo.
Lo que las personas quieren decir cuando recomiendan la reutilización sobre roll-your-own es que el código en una biblioteca conocida es probablemente más correcto, eficiente y / o utilizable de lo que usted podría pensar, simplemente porque los autores han pasado mucho más tiempo en un área particular de funcionalidad que usted (con su fecha límite para todo el proyecto) puede permitirse.
Pero eso es solo una tendencia, no una ley. Ciertamente puede haber bibliotecas que no son tan útiles para usar como lo sería roll-your-own. A menudo esto sucede cuando la biblioteca realmente hace mucho más de lo que necesita, y lo hace de una manera que lo obligaría a adaptar su propia base de código a sus convenciones mucho más de lo razonable. Parece que esto es exactamente lo que has encontrado en esta instancia.
fuente
Si bien el uso de las bibliotecas correctas puede ahorrarle mucho trabajo, también hay muchos costos ocultos:
Entonces, antes de agregar otra dependencia a su proyecto para incluir algo que también podría escribir usted mismo, haga un análisis de costo / beneficio.
fuente
Esto no tiene por qué ser una decisión binaria: solo use una biblioteca OSS o programe una nueva solución desde cero. Otra opción puede ser reutilizar partes de la biblioteca, si la licencia lo permite.
Por ejemplo, en mi campo (software numérico) una biblioteca puede tener módulos básicos finos y algunos módulos especializados con los que estoy solo un 80% satisfecho. Así que usaría los módulos principales y escribiría un contenedor para los módulos especializados. O puedo desarrollar mis propios módulos especializados utilizando el diseño y el código de los módulos OSS. Los bits algorítmicos más difíciles generalmente se reutilizan de ellos, con solo el código de andamio modificado. También puedo limpiar parte del código original. Esto ha demostrado ser una buena experiencia de aprendizaje y un ahorro de tiempo, en comparación con el desarrollo desde cero.
fuente
Si alguien ya ha hecho el trabajo por usted, por supuesto, debe usarlo.
La excepción a la regla es javascript. Donde habrán importado una docena de otras bibliotecas (versiones obsoletas, por supuesto) para agregar las funciones de idioma que desean usar y luego hicieron el trabajo por usted.
Elige tu marco y quédate dentro de él. Si la biblioteca funciona con su framework o js simple, está bien. Pero si necesita un marco diferente, busque otra opción.
fuente
Las bibliotecas y cuándo usarlas es una decisión complicada.
Por un lado, ha probado bien, cosas casi estándar (en mi campo, FFTW, por ejemplo, cae en esta categoría, o algo así como libsndfile), que generalmente se reconoce que solo funcionan, y han sido cosas estándar durante los últimos 20 años que Todos lo usan.
Por otro lado, tiene cosas aleatorias de github, sin un conjunto de pruebas y solo alrededor de 1 mantenedor, en general, ¿por qué molestarse?
La prueba de fuego para mí es, en primer lugar, que la biblioteca encaja en mi arquitectura (a veces, si sabes que quieres usar una biblioteca determinada, terminas diseñando eso), y creo que voy a terminar depurando el código de la biblioteca de otra persona ? Un buen proxy para la segunda pregunta es "¿Existe un conjunto de pruebas automatizadas y cómo es la documentación?".
Un poco de depuración no es un problema importante, pero en ese momento el código de la biblioteca comienza a contar en relación con el tamaño de mi propio código desde una perspectiva de mantenimiento (más aún si mis arreglos no se pueden impulsar hacia arriba por alguna razón).
También diferenciaría entre bibliotecas y marcos, ya que la distinción a veces no es tan clara, los marcos en mi mundo (núcleo pequeño, pesado DSP) tienden a ser una molestia, especialmente si estás tratando de fusionar más de uno o hacer algo un poco fuera de las líneas, las bibliotecas a veces son útiles. Soy consciente de que esto se ve de manera muy diferente en la escena de desarrollo web.
Al final del día, es una decisión que se reduce al gusto y la experiencia, e incluso los experimentados a veces eligen mal, al menos con una biblioteca, siempre puedes arrancarlo y escribir tu propia implementación si se vuelve demasiado molesto.
Decisiones decisiones....
fuente