C'est toujours un compromis.
En tant que programmeur débutant, vous devriez vous poser deux questions lorsque vous envisagez de réutiliser du code par rapport à réinventer la roue carrée:
- Vais-je en savoir plus sur le problème que je veux résoudre en écrivant tout à partir de zéro ou en me concentrant sur le domaine du problème et en mettant de côté la complexité non critique du problème qui m'intéresse?
- Est-il plus important pour moi de résoudre le problème actuel ou est-il plus important que je comprenne certains concepts fondamentaux?
Si vous n'avez pas besoin de terminer votre projet, c'est bien de faire tourner vos roues sur des problèmes complexes que d'autres personnes ont déjà résolus, car vous apprendrez quelque chose. Mais vous passerez probablement à autre chose avant de «terminer», ce qui peut ou non vous importe. D'autres projets commenceront à briller rapidement lorsque vous vous lancerez dans un domaine complexe qui semble simple jusqu'à ce que vous commenciez à essayer de le résoudre vous-même.
Ne soyez pas obsédé par l'abandon du contrôle parce que vous vous remettez à la façon de penser de quelqu'un d'autre; concentrez-vous davantage sur ce que vous essayez d'accomplir.
Si votre objectif est d'écrire un analyseur HTML parce que vous voulez comprendre comment fonctionnent les analyseurs, allez-y. Si votre objectif est d'écrire un analyseur HTML parce que vous souhaitez purifier les entrées utilisateur ou transformer des bits HTML aléatoires, vous êtes probablement concentré sur la mauvaise chose, car vous êtes probablement plus intéressé par l'application de l'analyse que par l'analyse elle-même. . Si vous avez envie d'écrire un analyseur HTML parce que vous ne voulez pas prendre le temps de comprendre la bibliothèque de quelqu'un d'autre, vous perdez probablement votre temps, car, au moins dans ce cas, je garantis que quelqu'un d'autre a passé plus de temps à comprendre comment pour résoudre ce problème efficacement que vous n'aurez. Dans des cas vraiment triviaux, vous pouvez gagner du temps en ne réutilisant pas de code, mais dans des cas complexes, à moins que la bibliothèque que vous utilisez ne suce ou que votre capacité à lire la documentation et les exemples de code ne suce,
D'un autre côté, je dirais que cela vaut la peine d'écrire votre propre bibliothèque de graphes, car vous serez plus concentré sur les algorithmes fondamentaux transférables et les structures de données que vous pourrez appliquer à d'autres domaines, même si vous finissez par utiliser la bibliothèque de quelqu'un d'autre lorsque vous travaillez sur ces problèmes.