En mi opinión, no, para nada. En todo caso, el uso de bibliotecas de terceros, bajo ciertas circunstancias, puede ser la opción más inteligente. La expresión “no reinventar la rueda” realmente se aplica aquí. ¿Por qué pasarías tiempo y esfuerzo resolviendo problemas que otros ya han resuelto?
Sin embargo, su preocupación no es totalmente injustificada. El uso de bibliotecas de terceros es definitivamente un tema muy debatido (de todos modos, en los círculos de ingeniería). Las bibliotecas pueden ser poco confiables, abandonadas por sus autores o tener problemas de seguridad. Es imperativo que cuando elija uno, sepa cómo hacerlo de manera segura e inteligente.
Considere estas ventajas y desventajas, ya que (con suerte) lo ayudarán a evaluar cuándo y cuándo no usar bibliotecas de terceros para su proyecto.
VENTAJAS DE LAS BIBLIOTECAS DE TERCEROS
Ahorrar tiempo:
El beneficio más importante de usar bibliotecas de terceros es que le ahorra tiempo ya que no necesita desarrollar la funcionalidad que proporciona la biblioteca. En su lugar, puede centrarse en la lógica empresarial central de su aplicación: las características que realmente importan. Claro, aún necesitará pasar un tiempo leyendo la documentación de la biblioteca y entendiendo cómo integrarla, pero generalmente esto es solo una fracción del tiempo que se necesitaría para desarrollar y probar su funcionalidad desde cero.
Usar código previamente probado:
Sobre el tema de las pruebas, otra ventaja de usar una biblioteca es la ‘prueba de uso’. Se ha utilizado una biblioteca popular en múltiples entornos y casos de uso. El ciclo de retroalimentación a partir de esto habrá dado como resultado que se informen y solucionen errores. Por lo tanto, el uso de una biblioteca de terceros comprobada no debería poner en peligro la calidad y la estabilidad general de su aplicación.
Usar código modular:
Otro beneficio que obtiene al trabajar con bibliotecas de terceros es que lo alienta a trabajar y escribir código modular. El código de la biblioteca se mantiene naturalmente separado del resto del código de su aplicación, y la comunicación se lleva a cabo a través de límites bien definidos (la API de la biblioteca). Si, en cambio, opta por desarrollar una función usted mismo, puede ser difícil desacoplarla del código de la aplicación. Los autores de una biblioteca bien construida tienden a operar en un nivel de abstracción diferente, uno que conduce a un código más limpio y genérico.
Desafortunadamente, el código modular no siempre significa código desacoplado. Lo que nos lleva a las desventajas de las bibliotecas de terceros.
DESVENTAJAS DE LAS BIBLIOTECAS DE TERCEROS
Dependencia:
Confiar en una biblioteca de terceros significa que su código está vinculado a esa biblioteca. Si en algún momento, se ve obligado a cambiar de biblioteca, es posible que su código tenga que sufrir cambios significativos para adaptarlo a la nueva biblioteca. Por supuesto, hay formas de mitigar esto mediante el uso de una fachada (contenedor) para la biblioteca. De esta manera, su código no llama directamente a la biblioteca, sino una abstracción.
Falta de apoyo:
Otro posible riesgo es que una biblioteca pueda ser abandonada por su autor. Esto es especialmente problemático en plataformas como Android, donde las nuevas versiones salen con frecuencia. Una biblioteca necesitará mantenimiento continuo para garantizar la compatibilidad con la última versión del SDK. Si eso no sucede, la biblioteca puede no funcionar de manera óptima (o en absoluto) en dispositivos más nuevos.
Uso excesivo
El uso de demasiadas bibliotecas también puede causar problemas, como conflictos de dependencia, que son difíciles de identificar y solucionar.
Un número excesivo de bibliotecas hinchará su aplicación al aumentar su tamaño y consumo de memoria. A su vez, esto afectará negativamente el rendimiento de su aplicación. En el caso de Android, puede contribuir a alcanzar el límite de 64k métodos.
Temas de seguridad:
Por último, pero no menos importante, el uso de bibliotecas de terceros puede plantear algunas preocupaciones de seguridad, ya que las vulnerabilidades en las bibliotecas de código abierto son cada vez más objetivos para los piratas informáticos.
Entonces, ¿cómo elijo la biblioteca correcta?
Si bien es importante comprender ampliamente los pros y los contras de este ecosistema, cada biblioteca es única y debe evaluarse según sus propios méritos (o falta de ellos). Para ayudar, he incluido el proceso evaluativo que uso cuando hago esto. Una vez que tenga una biblioteca candidata, hágase las siguientes preguntas para ver si es adecuada para sus necesidades:
¿Qué tan popular es la biblioteca?
Muchas plataformas de desarrollo, como Github, tienen evaluación de crowdsourcing incorporada. Comience por verificar cuántas estrellas tiene su biblioteca candidata. Luego verifique el número y la gravedad de los problemas reportados para esa biblioteca. Cuando un número significativo de desarrolladores confía en una biblioteca, es un buen indicador de calidad.
Algunas de las bibliotecas más grandes también pueden tener una comunidad activa involucrada en su mantenimiento y crecimiento. Compruebe Stackoverflow para esto, pero tenga en cuenta que esto no siempre está directamente relacionado con la calidad. ¡Algunas grandes bibliotecas de nicho tendrán poco en el camino de una comunidad! Una comunidad activa es muy útil para solucionar problemas.
¿Qué tan confiable es el autor?
Al hacer una verificación de antecedentes del autor, minimiza el riesgo de quedar atrapado en una biblioteca con errores o abandonada. ¿Están activos en Github? ¿Han lanzado múltiples bibliotecas? ¿Responden a problemas, resuelven errores y aceptan solicitudes de extracción?
Si una biblioteca está siendo apoyada activamente por su autor, es una buena señal de que se mantendrá estable, a largo plazo, a través de actualizaciones de plataformas y marcos.
¿Qué tan bien escrita está la biblioteca?
Revise brevemente el código e intente evaluar qué tan bien estructurado está. Por lo general, los buenos autores documentan bien. ¿Incluye un archivo README completo y actualizado?
Una biblioteca bien documentada ayudará a que la integración sea fluida y sin esfuerzo. La buena calidad del código probablemente significará una biblioteca estable y de rendimiento, con pocos errores.
¿La biblioteca cumple con sus requisitos específicos?
Si la biblioteca no cubre todos sus requisitos, puede terminar teniendo que modificarla (más tiempo invertido) o usarla de una manera que no fue diseñada (por ejemplo, empleando un truco que podría romperse en una versión futura de la biblioteca).
Por otro lado, una biblioteca que ofrece cientos de características que son superfluas para sus necesidades probablemente tampoco sea una buena opción. Sea fiel a sus requisitos y siga buscando hasta encontrar la biblioteca correcta, o, en el peor de los casos, ¡escriba la suya!
¿La biblioteca tiene la licencia correcta?
Otro factor que puede afectar su decisión es la concesión de licencias, ya que el uso de bibliotecas puede limitarse en función del uso. Por ejemplo, es posible que haya restricciones si tiene la intención de lanzar su producto comercialmente. Así que asegúrese de cumplir con los términos específicos de cada biblioteca que haya integrado en su aplicación.
¿La biblioteca es de código abierto?
Sin acceso al código de la biblioteca, no puede evaluar su calidad o rendimiento, ni puede depurar. Sin mencionar que la falta de transparencia plantea un riesgo de seguridad.
¿Se recomienda la biblioteca?
La mayoría de las plataformas tienen una serie de bibliotecas ‘de facto’ comúnmente utilizadas por la comunidad de desarrollo. Por ejemplo, en Android, esto incluiría Retrofit, Butterknife, Picasso / Glide y RxJava. Estas bibliotecas son de alta calidad, bien mantenidas y documentadas.
Si bien su uso es ciertamente de bajo riesgo, no siga ciegamente el paquete. En cambio, haga su propia investigación, comprenda por qué son tan populares y verifique qué limitaciones tienen. Tal como lo haría con cualquier otra biblioteca.
¿Se usará esta biblioteca para las funciones principales?
Debe conservar el control total sobre el código de sus funciones principales. Las bibliotecas suelen hacer compensaciones para poder cubrir un amplio espectro de casos de uso. Al usar las bibliotecas para sus funciones principales, está haciendo estas mismas compensaciones.
Por ejemplo, si la carga de imágenes es fundamental para su negocio, las bibliotecas de carga de imágenes existentes podrían no ser la mejor opción. Al usar uno, puede comprometer el rendimiento, o peor, las características. Es posible que la biblioteca no pueda trabajar con ciertos tipos de imágenes deseadas, o puede que desee utilizar un mecanismo de almacenamiento en caché que no ofrece la biblioteca.
Si bien las preguntas anteriores son aplicables a la mayoría de las situaciones, siempre debe tener en cuenta los parámetros específicos de su industria o plataforma de programación. Por ejemplo, si está trabajando en criptografía, debe tener mucho cuidado al escribir su propio algoritmo (a menos que tenga un doctorado en el campo, por supuesto). Crypto es muy difícil de corregir, y las apuestas son a menudo muy altas, por lo que recomendaría confiar en las bibliotecas probadas existentes.
¡LO SIENTO QUE ME LLEVÉ!
No escuches a los que odian. Las bibliotecas no son intrínsecamente malas y usarlas no te convierte en un programador perezoso. Cuando se eligen de manera metódica e inteligente, son una excelente herramienta para ahorrar tiempo.