it-swarm-fr.com

Quelle est votre opinion sur l'utilisation du code des autres personnes?

Selon - Ceci Question: J'ai décidé de mettre en œuvre la spécification BitTorrent pour créer mon propre client/tracker.

Maintenant, je traversais la spécification, j'avais environ 70% de la mise en œuvre du bencodage lorsque j'ai trouvé un lien vers une mise en œuvre du bencodage en C # écrit par quelqu'un d'autre.

Normalement, si je travaillais sur le code de production, je l'utiliserais comme une référence pour vérifier mes propres travaux et une ligne de base pour écrire des tests pour exécuter mon code, mais je me suis retrouvé à penser "je fais cela, je fais cela, C'est un projet pour le plaisir sans échéances; je devrais vraiment le mettre en œuvre moi-même - je pouvais apprendre beaucoup "mais une voix dans ma tête disait" Pourquoi déranger réinventer la roue? Prenez le code, travaillez-le afin que ce soit votre "Convention de style/nommage et tu as terminé."

Donc je suis un peu conflictuel. J'ai fini par faire ce dernier et certaines parties que j'ai trouvées mieux que ce que j'avais écrit, mais j'ai presque l'impression que je "trompé".

Quelle est votre prise? Est-ce que ça me trompe? Parfaitement normal? Une occasion manquée d'apprendre seul? Une bonne occasion d'avoir appris de l'exemple de quelqu'un d'autre?

29
Steven Evers

Si j'ai vu plus loin, il est debout sur les épaules des géants.

Isaac Newton

Il ne s'agit pas de tricher si le code est open source et vous avez pris le temps de le comprendre. Il est évident évidemment que cela n'est pas toujours possible grâce aux contraintes de temps, mais essayez de toujours avoir une vue d'ensemble de haut niveau du code que vous utilisez. Rappelez-vous toujours que c a été dérivé de B.

24
ChaosPandion

copiez-en un, c'est le plagiat; copier de deux, c'est la recherche.

n bon auditeur n'est pas seulement populaire partout, mais après un certain temps, il apprend à savoir quelque chose.

En d'autres termes, copiez tout ce que vous voulez, mais en apprenant quelque chose aussi. Aucun chercheur/scientifique/ingénieur/ingénieur n'a jamais eu lieu en s'appuyant uniquement sur son propre travail.

14
Rook

Alors que Newton pourrait dire: "Si j'ai vu un peu plus loin que d'autres, c'est parce que je suis resté sur les épaules des géants", je suis obligé de dire: "Aujourd'hui, nous nous tiens aux pieds de l'autre." Le problème central que nous sommes confrontés dans toutes les sciences informatiques est peut-être de savoir comment nous devons nous rendre à la situation où nous construisons sur le travail des autres plutôt que de refaire une grande partie de celle-ci dans un trivialement différent Way.

- R.W. Hamming , 1968 Turing Award Conférence [mettre l'accent sur la mine]

6
Roger Pate

Dans cette situation, cela dépend vraiment de la façon dont vous en ressent. J'ai traversé quelques choses et je les ai fait marquage conformes. Ai-je ré-écris l'analyseur Markdown en PHP? Nope, a emprunté quelqu'un d'autre. J'ai aussi ajouté PDF conversions. Ai-je écrit mon propre PDF Converter? Un aspect de la documentation Zend_PDF m'a fait vouloir courir hurlant sur les collines, alors je vais Confessez à nouveau pour utiliser le code de quelqu'un d'autre.


Si l'attente est un processus d'apprentissage, je l'utiliserais comme guide. Écrivez votre propre, puis comparez. Utilisez la comparaison pour améliorer votre propre code.

4
Josh K

La meilleure façon de répondre à cette question est d'évaluer vos objectifs. Pourquoi avez-vous commencé ce projet de votre animal de compagnie?

Vouliez-vous apprendre la technologie ou expérimenter une nouvelle langue ou une nouvelle technique? Si oui, écrivez votre propre.

Ou avez-vous commencé parce que vous vouliez un produit final de travail? Le projet remplit-t-il quelques besoins? Si oui, empruntez et empruntez souvent.

3
AShelly

eh bien, voici mes 2 cents ... Pourquoi les collèges insistent-ils pour que les élèves écrivent leurs propres hashtables, liklists, tableaux, etc. au lieu de leur permettre d'utiliser des bibliothèques existantes? 1) Pour qu'ils comprennent les concepts sous-jacents de ces structures de données ...

Mais, en tant que développeur professionnel, je suis tout à fait pour ne pas réinventer la roue, à moins d'apprendre quelque chose de nouveau, ou d'améliorer la "roue" actuelle. Je suis tout pour apprendre du code des autres parce que parfois, je n'ai pas le temps d'écrire une nouvelle bibliothèque ou parfois, j'ai juste besoin d'un module fonctionnel sans connaître son travail intérieur ... comme je conduis une voiture sans vraiment comprendre tout le machinerie ...

Mais, pour un enrichissement personnel - Eh bien, c'est totalement à vous: p. Apprenez autant que vous pouvez tout en réinventer la roue serait un bon principal. Ou ... montez avec quelque chose qui remplace la roue ...

2
aggietech

Vous utilisez c #, alors je suppose que vous utilisez déjà un cadre (.NET ou mono). Le .NET Framework est livré avec beaucoup de choses déjà faites pour vous (par exemple la communication TCP), et je suis sûr que vous copiez également des extraits de code que vous trouvez dans certains sites comme Stackoverflow.com, alors pourquoi réinventer la roue?

En outre, vous avez déjà appris suffisamment (en faisant le 70% par vous-même) pour comprendre le code de l'autre gars et réaliser que c'était mieux que le vôtre dans certains points.

Si le code correspond à vos besoins et est open source, alors prenez-la. Mais, d'autre part, ce que je ne ferais pas, c'est changer le code pour le rendre plus comme la vôtre. Ajoutez vos commentaires, définissez certains en-têtes pour savoir où avez-vous extrait le code, mais ne le modifiez pas si vous ne pouvez pas l'améliorer.

2
jmservera

"Le meilleur code est le code que vous n'avez pas à écrire." - Inconnu

Si le code est libre d'utiliser et que les conditions de la licence conviennent à ce que vous allez l'utiliser, alors quel est le problème?

L'utilisation d'un code d'autre personnes est un excellent moyen de gagner du temps et des efforts, et aussi longtemps que vous le faites légalement, je pense que seules les bonnes choses peuvent en venir.

2
Jasarien

Ma réponse sera biaisée de mon point à coup sûr, mais en utilisant le code d'autres personnes, c'est comme jouer avec une boîte noire: vous connaissez l'entrée et la sortie, mais vous ne savez pas ce qui se passe du tout, mais il y a aussi quelque chose de vrai: vous pas besoin de réinventer la roue tous les jours

Selon la manière dont il a été écrit le code tiers, il peut également dessiner une ligne avec un avertissement "d'ici, nous entrons dans le domaine des conséquences inconnues"

1
rmontagud