¿Los siguientes escenarios cuentan como "reinventar la rueda" en su libro?
Existe una solución, pero no en el idioma que desea usar, y las soluciones existentes no pueden interactuar con el idioma que desea usar de una manera limpia e idiomática.
En principio, podría obtener una biblioteca existente para hacer lo que quisiera con grandes modificaciones, pero cree que probablemente sería más fácil comenzar desde cero.
Lo que está escribiendo tiene la misma descripción de una línea que las cosas que ya se han hecho, pero está apuntando a un nicho diferente. Por ejemplo, tal vez su problema se haya resuelto miles de veces antes, pero de una manera que es ineficiente para grandes conjuntos de datos y su código funciona bien para grandes conjuntos de datos.
Respuestas:
Si hay una solución existente que a sus ojos sería una solución práctica , entonces no usarla sino crear su propia solución sería reinventar la rueda. Aparte de eso, es altamente subjetivo.
Sobre sus escenarios específicos:
fuente
Reinventar la rueda es de lo que otros te acusan cuando tu análisis indica que debes escribir algo tú mismo y el suyo no.
fuente
Creo que reinventar la rueda se puede definir de manera bastante simple: cuando, a la larga, haces más trabajo escribiéndolo tú mismo en lugar de usar la biblioteca. Tenga en cuenta que no siempre está claro cuánto trabajo puede ser algo a largo plazo . Es posible que pueda hackear un prototipo usted mismo más rápido de lo que puede refactorizar su código existente para incluir la biblioteca, pero, a la larga, cuando agrega más capacidades o tiene que admitir el código, la biblioteca funcionaría mejor.
La conclusión es que debe pensar detenidamente sobre su situación al decidir si usar o no una biblioteca. Debe decidir si la biblioteca es más fácil para lo que quiere hacer ahora y más fácil para lo que hará en el futuro . Saber lo que hará en el futuro no siempre es sencillo, pero si tiene un buen plan, debe tener una idea aproximada. Dicho esto, a veces los pronósticos son inexactos: generalmente no te das cuenta de que has reinventado la rueda hasta después de haberla hecho.
fuente
Es demasiado amplio y subjetivo para ser posible responder con precisión simplemente porque cada caso es diferente.
Es perfectamente aceptable reinventar la rueda cuando sea necesario, la clave es usar su criterio para decidir cuándo la rueda anterior es una solución aceptable y cuándo no es lo suficientemente redonda como para dar un paseo suave.
Es una pregunta que debe hacerse casi retóricamente a veces para garantizar que se utilice el mejor enfoque. A menudo puede encontrar un mejor algoritmo en un libro que la mayoría de los programadores pueden escribir en el tiempo que lleva encontrarlo.
fuente
Cuanto más grande y complejo sea el problema, es menos probable que exista una rueda que se adapte exactamente a sus necesidades, y más legítimo será reconstruirla.
Creo que solo deberíamos aplicar "no reinventar la rueda" a elementos básicos (funciones que ya están integradas en la plataforma, patrones de diseño conocidos ...) o si la solución exacta a su problema está disponible, pero eso es Raramente el caso.
Tus 3 puntos no cuentan como reinventar la rueda para mí.
fuente
Depende ...
Para los dos primeros:
En ambos casos, tiene sentido escribir su propio código. Pero considere esto: ¿contiene la solución existente alguna técnica, algoritmo o rutina de la que pueda aprender? Ignorarlos sería reinventar la rueda.
Tres preguntas:
Si la respuesta a cualquiera de estas preguntas es "No", está reinventando la rueda.
Dicho esto, no estoy convencido de que reinventar la rueda siempre sea algo malo de todos modos:
fuente
Su primer escenario, se aplica para reinventar la rueda, se explica por sí mismo.
El segundo escenario, NO se aplica si el código existente requiere poca modificación, pero si lo hace, es una buena idea intentar usar propiedades, métodos y usos similares a los de un código existente, para que otros desarrolladores no tengan problemas para usar su "rueda".
Tenga cuidado con el enfoque "siempre es mejor comenzar desde el comienzo", puede llevar más tiempo del esperado.
El tercer escenario que mencionas es el enfoque "práctico". La "rueda dada" puede hacer el trabajo, pero, en realidad, consume demasiados recursos, memoria, velocidad, etc.
Trabajé una vez en una aplicación que requiere mostrar datos jerárquicos en un control de vista de árbol desde una sola tabla. Ya tenemos un control que podría hacer eso, pero admitimos varias tablas, por elemento.
Para usarlo, tuve que aprender demasiadas cosas, asignar demasiadas propiedades, ejecutar demasiados métodos, y FUE LENTO. Un compañero de trabajo insistió en usarlo para "no reinventar la rueda".
Hice un nuevo control, desde cero, leí una sola tabla, programé solo algunas propiedades fáciles de aprender. Y antes de darme cuenta, hubo otro compañero de trabajo que lo tomó del repositorio de código compartido y reemplazó el control anterior.
Prima:
Cuando la rueda que ya tienes está "al cuadrado". Por "cuadrado", quiero decir que en la superficie, parece que parece una solución a su problema, pero después de una buena mirada, llega a la conclusión de que no.
Depende de si tiene las habilidades y el tiempo (y la autorización de su empresa) para reinventar la rueda.
fuente
Primero lea este excelente artículo de Joel Spolsky: En defensa del síndrome de no inventado aquí
Entonces, todas las razones técnicas se convierten en matices realmente menores. Si cree que este software es crítico para su trabajo, vuelva a escribirlo. Sí, es "reinventar la rueda", pero probablemente valga la pena pasar tiempo escribiendo y manteniendo. Si no es crítico, simplemente use lo que está disponible.
fuente