Globalement, je suis en programmation depuis environ 8 ans maintenant et il me semble que je compte de plus en plus sur des bibliothèques open source et des extraits (maudits GitHub!) Pour "faire le travail". Je sais qu'avec le temps, je pourrais écrire ma propre mise en œuvre, mais j'aime bien me concentrer sur la conception globale.
Est-ce normal (environnement non-entreprise)? Qu'est-ce qui pourrait mal se passer si ma "programmation" n'est rien de plus que de coller différentes bibliothèques ensemble?
Je sais à propos de "ne pas réinventer la roue" mais que se passe-t-il quand on n'invente plus une seule roue?
programming-practices
libraries
code-reuse
Henrik P. Hessel
la source
la source
Réponses:
Utiliser des bibliothèques au lieu de réinventer la roue: génial! C'est comme ça que tout le monde devrait le faire. Vous n'êtes pas payé pour faire ce qui est déjà fait.
Utilisation d'extraits de code: tant que vous comprenez ce que vous copiez-collez et que vous investissez du temps pour le rendre cohérent (au lieu d'un patchwork de styles et d'approches différents), il n'y a rien de mal à cela.
la source
la source
Good artists copy, Great artists steal
.Le codage est le niveau de programmation le plus bas. Plus le niveau d'abstraction est élevé, meilleur est le programmeur. Choisir les bonnes bibliothèques (pas nécessairement celles qui sont à code source ouvert), les relier correctement et maintenir la structure est beaucoup plus difficile, mais plus efficace, plus rapide et moins coûteux que de tout écrire vous-même.
la source
J'aime écrire mes propres bibliothèques. J'aime aussi que mes projets soient terminés à temps. Je pense qu'avec le temps, la plupart des bons programmeurs construisent une collection de bits utiles et réutilisables. Je ne sais pas pour vous, mais je ressens bien chaque fois que j'utilise une bibliothèque que j'ai écrite il y a cinq ans.
Il n'y a absolument rien de mal à utiliser le code de bibliothèque qui a été testé et apprécié au fil du temps. Vous savez comment cela fonctionne, vous pouvez compter sur sa complexité et l'implémenter rapidement.
Cela étant dit, je suppose que vous comprenez le code de la bibliothèque. Je suppose que, si on vous laisse suffisamment de temps, vous pouvez mettre en œuvre quelque chose de qualité similaire.
Je connais de très bons programmeurs C qui pourraient implémenter la bibliothèque C standard, dont certains ont simplement un exercice d'apprentissage / d'aiguisement. Parmi les activités les plus amusantes que j'ai eues pendant mes loisirs, j'ai travaillé sur la bibliothèque C dans HelenOS.
Il n’ya donc rien de mal à utiliser le code de bibliothèque, tant que vous continuez à être curieux et à apprendre. Il va sans dire que vous ne devez pas utiliser de code que vous ne comprenez pas, sauf si vous en utilisez un effort pour comprendre son fonctionnement.
la source
Je ferai mieux que certains autres dans cette question: je ne pense même pas que le développeur "client" d'une bibliothèque ait besoin de "comprendre" le code de cette bibliothèque.
Je suis (comparé à certains) développeur relativement nouveau sur iPhone. Il y a BEAUCOUP de bibliothèques que j'utilise tous les jours et que je n'aurais jamais pu générer par moi-même, et dont le code me dépasse largement. Peu importe le moins du monde:
1) Je comprends parfaitement l'interface avec ces bibliothèques (je suis un ninja ASIHTTPRequest!)
2) Je choisis des bibliothèques qui sont généralement utilisées à grande échelle , je peux donc être sûr qu'elles ont bien été explorées et résolues. (par exemple: ASIHTTP, la bibliothèque JSON de Stig Brautaset, la bibliothèque obj-c de Facebook, etc.)
3) À défaut # 2, c'est assez simple pour que je puisse me frayer un chemin à travers et trouver / corriger / personnaliser tout ce qui doit être trouvé / réparé / personnalisé .
Ce n ° 2 va être la partie controversée de cela, je parie. Le fait est que je compte sur la communauté open source, une communauté de développeurs certainement plus expérimentée et probablement plus intelligente que moi. Mais c'est tout l'intérêt de l'open source. Alors voilà.
la source
Je voudrais lancer un avertissement pour utiliser des bibliothèques. En tant qu'utilisateur fréquent des bibliothèques scientifiques de Perl et R (et certaines de Java), je devais souvent pirater une bibliothèque pour éviter des frais généraux démesurés. Utiliser des bibliothèques est une bonne chose, mais de plus en plus de bibliothèques dépendent elles-mêmes d'autres bibliothèques, qui appellent une troisième bibliothèque qui utilise la bibliothèque standard pour effectuer une tâche plutôt commune. Et chaque étape du processus nécessite des vérifications d’entrée et de sortie. Un grand nombre de ces contrôles sont complètement redondants, mais ils pèsent néanmoins sur l'application. Et quand utilisé dans une boucle, alors peut commencer à peser assez lourdement.
À côté de cela, vous ne pouvez pas être sûr que les bibliothèques conservent toujours la compatibilité, ou ne contiennent pas de bogues. En fait, toutes les bibliothèques contiennent quelques bugs, c'est la nature du code. Par conséquent, plus vous dépendez de bibliothèques, plus vous introduisez de bugs potentiels dans votre code. Et ces bugs que vous ne pouvez pas résoudre vous-même aussi facilement sans pirater à nouveau les bibliothèques.
Utiliser des bibliothèques est une décision très intelligente, mais si et seulement si vous connaissez assez bien les bibliothèques et leur comportement.
Je sais, penser fait mal et les ordinateurs ne coûtent pas cher, mais quand même. Ne pas penser peut faire plus mal.
la source
Généralement, copier de grandes quantités de code source est une mauvaise pratique. Si le code a été développé pour une autre application de votre entreprise, vous devez le réutiliser en l'extrayant dans une bibliothèque à utiliser par les deux applications. Vous ne devriez pas copier le code. La copie du code vous obligera à conserver deux copies au lieu d'une copie commune.
la source
La réutilisation de code est une très bonne idée. Cela réduit la redondance et favorise la maintenabilité.
Le titre suggère que vous utilisez le code en tant que bibliothèque, mais le texte de votre question implique que vous copiez peut-être le code source dans un nouveau projet. J'en resterais à utiliser autant que possible le code d'autres développeurs en tant que bibliothèque.
Il y a un problème si le code est mauvais, cassé ou basé sur un modèle qui ne convient pas très bien à votre application. Dans ce cas, il serait peut- être plus simple de supprimer tout ou partie du code et de repartir à zéro plutôt que d'essayer de comprendre pourquoi il a été écrit d'une manière donnée. Gardez l’autre code pour référence, cependant; vous pouvez rencontrer un problème que vous ne savez pas comment résoudre. Il est fort probable que l'autre développeur ait probablement rencontré le même problème et il est intéressant de voir comment il l'a résolu.
la source
C’est généralement une bonne idée, aussi longtemps qu’il n’ya pas de problèmes juridiques.
Cependant, assurez-vous de prendre le temps de comprendre ce que fait la bibliothèque et comment elle le fait. Utiliser une bibliothèque "magique" pour prendre en charge des choses que vous ne comprenez pas est un bon moyen de vous faire exploser, car vous ne vous en êtes pas bien servi et vous n'avez aucune idée de la façon de la réparer.
la source
Réutiliser le code légalement n'a presque aucun inconvénient et deux avantages énormes:
la source
Si vous utilisez des bibliothèques et des extraits de code aux endroits appropriés, alors «Non» ne signifie pas que vous êtes un mauvais programmeur. Cela signifie que vous êtes un programmeur intelligent qui peut appliquer la sagesse des autres aux endroits appropriés.
Toutefois...
Il faut du temps pour trouver des bibliothèques et des extraits de code. Par conséquent, si vous ne pouvez pas écrire de code vous-même et que vous devez passer des heures à trouver des bibliothèques et des extraits de code pour implémenter des tâches triviales, alors «Oui» est un mauvais programmeur.
la source
Non. Les programmeurs devraient utiliser des bibliothèques déjà existantes. Pas de réinvention de la roue. Si vous avez une meilleure méthode, vous pouvez y aller, sinon que fait-elle vraiment en écrivant le même code. La seule chose à faire est de savoir quel est le code (et seulement si cela compte).
la source
En plus des raisons mentionnées dans les autres réponses, ne pas utiliser le code (tant que cela convient bien à votre problème) peut être considéré comme contraire à l'éthique pour les raisons suivantes:
N'oubliez pas que ces deux éléments sont difficiles à déterminer à l'avance.
Regardez aussi Not Noted Here , qui est communément appelé un motif anit.
la source
Pour l'achèvement, autorisez un contre-argument: http://web.archive.org/web/20150326134617/https://michaelochurch.wordpress.com/2015/03/25/never-invent-here-the-even-worse ici
Il y a toujours un équilibre.
la source
Je suis pour ne pas utiliser les bibliothèques sauf si absolument nécessaire. Les dépendances limitent la portabilité et la durée de vie. J'ai 34 ans d'expérience en développement de logiciel et j'aimerais qu'au moins un de mes programmes dure plus de 3 ans sans être détruit par l'érosion (changement).
COM (Component Object Model), la réponse il y a 17 ans, en théorie génial, en pratique douteux, composants réutilisables pas vraiment, je n'utiliserai que les composants de base et seulement si je suis obligé de le faire.
Les API et SDK ne sont pas très utiles. Si je décompose le nombre de lignes de code que j'utilise réellement dans une bibliothèque, le temps que je passe à les faire fonctionner par rapport à leur écriture, je pense que c'est un lavis. J'ai complètement cessé d'utiliser les kits de développement logiciel (SDK), les frais généraux sont extrêmes.
Frameworks: Zend, Silverlight, WCF, .NET, les systèmes en couches, certes, ils peuvent accélérer le développement initial, mais lorsque je dépasse leurs limites, le temps que je passe à réparer les fissures ne vaut tout simplement pas la peine. Quel âge ont-ils et sont-ils imperméables à l'érosion?
Je suis allé à JavaScript et HTML avec seulement mes bibliothèques. J'ai simplifié JavaScript en n'utilisant que les types d'instructions les plus courants. J'espère que dans 10 ans, je pourrai écrire quelque chose qui durera.
la source
Tout dépend. Si vous codez un jeu, il vous faudra utiliser une bibliothèque (ex. Allegro), mais vous ne pouvez pas vraiment être considéré comme un programmeur si vous copiez / volez / empruntez (quel que soit le code d’autre personne). Je dis non pas de réinventer la roue mais à un point raisonnable. Ne faites pas votre programme entier d'extraits que d'autres personnes ont écrit. Asseyez-vous devant votre ordinateur et faites-le vous-même ... arrêtez de voler du code. Les gens sont devenus trop paresseux ces jours-ci et il suffit de copier et coller.
la source