Ser "malo" o incluso "malo" son palabras bastante fuertes.
Como siempre, hay razones para elegir una implementación personal en lugar de una incorporada. En los viejos tiempos, un programa de C podría encontrar errores en la biblioteca de tiempo de ejecución y, por lo tanto, simplemente tienen que proporcionar su propia implementación.
Esto no se aplica a los programas Java, ya que la JVM está muy estrictamente definida, pero algunos algoritmos aún son muy difíciles de corregir. Por ejemplo, Joshua Bloch describe cómo el algoritmo de búsqueda binaria simple y engañoso en la biblioteca de tiempo de ejecución de Java contenía un error, que tardó nueve años en aparecer:
enlace
Se encontró, reparó y distribuyó en futuras distribuciones de Java.
Si utiliza la búsqueda binaria incorporada, ahorrará tiempo y dinero al hacer que Sun haga el trabajo duro para encontrar, corregir y distribuir esta corrección de errores. Puede aprovechar su trabajo simplemente diciendo "necesita al menos Java 6 actualización 10".
Si usa su propia implementación, que probablemente también contenga este error, primero necesita el error para manifestarse. Dado que este en particular solo se muestra en GRANDES conjuntos de datos, es probable que ocurra en la producción en algún lugar, lo que significa que al menos uno de sus clientes se verá afectado y es muy probable que pierda dinero real mientras encuentra, corrige y distribuye la corrección de errores.
Por lo tanto, es perfectamente válido preferir su propia implementación, pero la razón es mejor que sea realmente buena, ya que es más costosa que aprovechar el trabajo de otros.