Una cosa que trabajar en Haskell y F # me ha enseñado es que alguien en una universidad más inteligente que yo probablemente ya ha encontrado una abstracción de lo que estoy haciendo. Del mismo modo, en C # y en la programación orientada a objetos, probablemente haya una biblioteca para "eso", sea lo que sea lo que estoy haciendo.
Hay tanto énfasis en reutilizar abstracciones en la programación que a menudo siento un dilema entre: 1) codificar algo corto y sucio yo mismo o 2) pasar el mismo tiempo para encontrar la biblioteca / solución más robusta de otra persona y simplemente usar eso.
Como recientemente, uno de los codificadores aquí escribió un (des) serializador para archivos CSV, y no pude evitar pensar que algo así probablemente sea muy fácil de encontrar en línea, si aún no viene con el estándar .NET APIs.
Sin embargo, no lo culpo, varias veces trabajando en .NET he arreglado una solución basada en lo que sé, solo para darme cuenta de que había alguna llamada a método u objeto o algo , a menudo en la misma biblioteca, que hizo lo que Quería y simplemente no lo sabía.
¿Es esto solo un signo de inexperiencia, o siempre hay un elemento de compensación entre escribir nuevo y reutilizar viejo? Lo que más odio es cuando encuentro una solución que ya conocía y olvidé. Siento que una persona simplemente no es capaz de digerir las enormes cantidades de código que viene preempaquetado con la mayoría de los idiomas en estos días.
fuente
A veces esto es un signo de inexperiencia, ya sea con el lenguaje particular o con la programación en general. Sin embargo, a veces, si el ajuste no es obvio, es mejor rodar su propio código que hace exactamente lo que quiere y nada más . Las bibliotecas genéricas, aunque a menudo son útiles, se pueden construir para requisitos que simplemente no tiene, y en algunos casos este nivel de genérico puede hacer que sean más problemáticos de lo que valen.
Ejemplo: para mis pequeños proyectos individuales, nunca uso una biblioteca de registro "real". Yo uso
print
declaraciones más una pequeña configuración ad-hoc. No quiero molestarme con la configuración y configuración de una biblioteca de registro que tiene muchas más funciones de las que usaré, cuando lasprint
declaraciones funcionan bien para mis propósitos. Tampoco quiero otra dependencia que podría no ser compatible con la versión del compilador / intérprete que quiero usar, tendría que ser distribuida, etc.fuente
Bienvenido al mundo de la programación. Este tema será objeto de muchos desacuerdos entre usted y sus futuros colegas. Tienes dos opciones:
Creo que hay momentos en que ambas soluciones son apropiadas. Por ejemplo, preferiría evitar lanzar mi propio analizador CSV de ORM si puedo evitarlo principalmente porque es un trabajo bastante tedioso. Por otro lado, las bibliotecas a menudo están restringidas. Diría que para cada proyecto en el que he trabajado, he encontrado bibliotecas que resolverían mi problema perfectamente si no fuera por esta deficiencia. O, a veces, una biblioteca es exactamente lo que necesita cuando comienza a hacer algo, pero es más perjudicial que ayuda una vez que necesita hacer cambios.
Sin embargo, en general, aconsejaría no tratar de encontrar respuestas "correctas" porque no existen. En caso de duda, solo sigue tu instinto. Una vez escuché a alguien decir que la experiencia se define por la cantidad de errores estúpidos que cometes. Por lo general, aprenderás algo o harás algo que funcione. De cualquier manera, no todo es malo.
fuente
Esto (o algo similar) me ha sucedido a menudo en un trabajo anterior en el que el marco sufría un grave efecto de plataforma interna.
Básicamente, su base de código evolucionó desde los primeros días de Windows C / C ++, luego comenzó a compilarse bajo MFC, por lo que los encargados del mantenimiento comenzaron a mezclar MFC y sus antiguas estructuras de datos internas y componentes de ventanas. La plataforma interna no estaba muy bien documentada, pero supuestamente era "La forma" de hacer cosas en ese producto, debido a algunas instalaciones internas que proporcionaba. A menudo me resultaba más fácil y rápido escribir mis propias cosas desde cero (desde los fundamentos de MFC), en lugar de averiguar cómo hacerlo con el marco interno de la empresa.
(De acuerdo, parece que esto es casi lo opuesto a su punto inicial, ¡pero el principio es el mismo, jeje! Sí, a veces es más rápido hacer lo suyo que gastar tiempo y esfuerzo para encontrar un material reutilizable existente) solución.)
fuente