hallo,
oft wird geschrieben: man kann viel lernen, indem man Code aus anderen Open Source Projekten liest. Was mein ihr dazu?
Was, wenn das Projekt z.B. eine Java Portierung ist (nHibernate, nUnite, ...) und spezifische Funktionen von C# nicht nutzt - lernt man dann ev. Sachen, die man in der Praxis anders lösen kann + sollte?
Habt ihr schon mal durch fremden Code gesteppt und gedacht: das ist elegant implementiert, das mache ich nächstes mal auch so?
Habt ihr Empfehlungen für Projekte, aus welchen man etwas lernen kann?
fg
hannes
Hallo,
das ist eine gute Frage.
Ich glaube nicht dass man das so verallgemeinern kann.
D.h. es gibt kein bestimmtes Projekt mit dem man alles lernen kann.
Das kommt einfach mit der Zeit wenn man im Forum aktiv ist und neue Dinge liest oder an einem Projekt mit anderen zusammenarbeitet oder einfach nur diskutiert.
Dabei lernt man immer wieder irgendwelche neue Herangehensweisen und sieht wie man manche Dinge auch sauberer lösen könnte.
Habt ihr schon mal durch fremden Code gesteppt und gedacht: das ist elegant implementiert, das mache ich nächstes mal auch so?
Naja. Wirklich durch fremden Code debugge ich nicht da ich meistens alles selbst mache 😃
Also meiner Meinung gibt es da kein wirkliches Rezept dazu 😃
Übung macht den Meister
Gruss
Michael
mit open source code habe ich bislang nur negative erfahrungen gemacht. oft waren das nur hobby programmierer, die lange zeit frickelten und auf das gefrickelte noch mehr gefrickelt haben (zumindest in den projekten, die ich gesehen habe)
ich lese aber gerne code in forumsposts oder auf codeproject oder stackoverflow. da kann meist noch was lernen.
Habt ihr schon mal durch fremden Code gesteppt und gedacht: das ist elegant implementiert
sehr sehr selten.
Was, wenn das Projekt z.B. eine Java Portierung ist (nHibernate, nUnite, ...) und spezifische Funktionen von C# nicht nutzt - lernt man dann ev. Sachen, die man in der Praxis anders lösen kann + sollte?
davon würde ich dir abraten. zum lernen einer programmiersprache sollte man vorzeigecode betrachten, denn sonst läufst du gefahr, es auf die gleiche unelegante art und weise zu lösen, wie du es gelernt hast.
Hallo HannesB,
du darfst natürlich nicht davon ausgehen, dass Code von anderen zwangsläufig besser ist als der eigene Code. Aber wenn der Code besser ist, als der den du selber geschrieben hättest, dann wird dir das schon auffallen. Wenn du es dann in Zukunft selber so machst, gibt es immer noch keine Gewähr, dass du die beste Lösung überhaupt einsetzt, aber es ist zumindest eine Verbesserung gegenüber deinem vorherigen Kenntnisstand eingetreten. In diesem Sinne kann man durchaus aus fremdem Code was lernen. Deshalb gucke ich mir aber noch lange nicht den Code von größeren Open Source Projekten an. Viel spannender ist, was man hier im Forum oder auch in Blogs oder Artikeln sieht.
herbivore
Hallo HannesB,
Viel spannender ist, was man hier im Forum oder auch in Blogs oder Artikeln sieht.
Das kann ich nur unterstreichen.
V.a. da im Forum auf schlechten Code sofort hingewiesen wird und Vorschläge zur Verbesserung in Form einer Diskussion gemacht werden.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo HannesB,
ich habe die Erfahrung gemacht, dass man manchmal nützlich sein kann, fremden Code zu lesen. Oft interessiere ich mich einfach, wie die anderen etwas realisiert haben oder wie es im allgemeinen programmiert worden ist. Selbst Code aus dem .NET Framework lese ich mal durch. Für mich bedeutet programmieren nicht, einfach Code zu tippen, sondern auch zu verstehen was hinter den Kulissen vor sich geht. Weiterbilden kann man sich damit allemals!
Zu beachten sind allerdings auch die Lizenzierungen. Nicht, dass man noch etwas tut, was man nicht darf.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Danke für eure interessanten Beiträge,
ich stimmte auch zu fast allen Teilen mit eurer Meinung überein, möchte jedoch ergänzen: Ich finde es sehr gut, dass es Foren wie dieses gibt, wo man sich austauschen kann und von der Erfahrung anderer profitieren. Deshalb wohl der Leitsatz "gemeinsam mehr erreichen" 🙂
Natürlich ist es aber schon was andres, wenn man hier über Codeschnipsel diskutiert, oder die Architektur eines gesammten Projektes mit > 10000 Klassen betrachtet - da sind dann halt plötzlich Sachen wichtig, die in einem "Codeschnipsel" (um beim Wort zu bleiben) wohl nicht so wichtig sind.
Beispiel: Für ein Programm mit gesamt 200 Zeilen werde ich mir eher nicht überlegen, ob ich einen DI-Container einsetzen soll, für ein Enterprise Projekt ev. schon.
Ein Autor von "Inside sharp develop" hat mir mal zurückgeschrieben, dass das team viel gelernt hat, nachdem sie sich mit design patterns beschäftigt haben. Ich denke daher wiederum, dass man ev. viel lernen kann, wenn man sich den Source eines Projektes wie "sharp develop" anschaut.
fg
hannes
Also ich les derzeit das "Clean Code" Buch von Dingsbums, und da ist sehr viel Code drin, ist in Java geschrieben.
Angesichts des schnellen Wandels sollte man auch bei Programmiertechniken auf dem neusten Stand sein: IT-Republik, 10 Dinge über die sich Entwickler am meisten ärgern (Platz 1.)
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉
Hallo!
Ist evtl. etwas offtopic, aber viel kann man auch lernen, wenn man mit 2-4 anderen im Team eine Software entwickelt. Hatte ich zweimal an der Uni als Projektarbeit, und dabei habe ich eine Menge gelernt, besonders, wenn man zu 2. oder 3. eine bestimmte Code-Passage gemeinsam entwickelt. Allerdings sollten alle schon etwas mehr Erfahrung im entwickeln haben.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Habt ihr schon mal durch fremden Code gesteppt und gedacht: das ist elegant implementiert, das mache ich nächstes mal auch so?
Ich hatte die letzten wochen ein projekt bei dem ich genau das gegenteil dachte.
Dadurch habe ich gelernt wie mans nicht macht 😉
Use the source, Luke!
Nur, weil man vor sich eine CPU hat, muß man das Denken nicht
einstellen.