2009-07-24 2 views
9

Ich bin beschäftigt! Die meiste Zeit verbringe ich mit analytischen Techniken oder mit Kursarbeit, und wenn ich in den Programmiermodus umschalte, muss ich schnell Code generieren. Da es dem Primärermittler für das Labor, in dem ich mich befinde, egal ist, ob ich TDD oder einen Abakus verwende, solange ich schnell Ergebnisse bekomme.Wie integriere ich TDD in meinen Workflow als wissenschaftlicher Programmierer/Student/Forscher?

Ich habe gelesen "TDD mit Beispiel" und fand es sehr hilfreich. Ich kaufte später "Refactoring: Verbesserung des Designs von bestehendem Code", "Design Patterns: Elemente von wiederverwendbarer objektorientierter Software" und "Effektiv mit Legacy Code", aber diese Bücher sind groß und die Aussichten, in diese zu springen, ist entmutigend !

Der Dialogstil und der Ablauf von "TDD by example" erleichterten die Einarbeitung in meinen Zeitplan. Aber ich weiß nicht, wie ich in diesen anderen Büchern und in welcher Reihenfolge arbeiten soll; es scheint, dass jeder ist genauso relevant (Ich bin in einer Art Dining Philosoph Deadlock - Ich warte auf jeden Aspekt meiner Programmierung Toolkit zu verbessern, aber ihre Interdependenz hat mich entweder festgefahren oder verlieren Zeit für Kontextwechsel - Entschuldigung für die Analogien :)). z.B. Ich habe Legacy-Code, der refaktoriert und mit Tests abgedeckt werden muss, ich muss mit TDD weitermachen (aber ich tue es nie), ich muss mit Designmustern programmieren, damit ich die Räder nicht neu erfinde.

Gibt es eine gute Möglichkeit, diese erforderlich zu brechen liest in Byte große Brocken und ein Weg, dies zu tun, während ihre Techniken zu aktuellen Projekten Anwendung (persönlich, ich verliere die Informationen, wenn ich es nicht anwenden kann sofort) Konzentriere ich mich auf ein Buch und vervollständige es? Brauche ich zuerst TDD, dann Refactoring und Design Pattern Skills (aber "Hühnchen und das Ei" all diese Unit Test Bücher sprechen über Design-Muster und Refactoring, als ob ich sie weiß, rückwärts und vorwärts)?

Ich habe die best tutorials for beginners gelesen, aber es erklärt nicht, wie ich dies in einen vollen Zeitplan integrieren. Und ich lese programming in a scientific environment, aber wieder vermisst es das Zeichen, wie Sie diese Techniken hinzufügen, wenn Sie bereits rechtzeitig zurück sind.

Antwort

2

Angesichts der Beschreibung von dem, was Sie tun, würde ich zuerst damit beginnen, die Annahme in Frage zu stellen. Ich weiß nichts über die Komplexität Ihrer Programme, aber wenn Ihre Programmierung ausschließlich aus der Generierung von Berechnungen besteht, ist es eine Art "Skript-Ebene", was bedeutet, dass Sie für ein bestimmtes Stück Code genauso einfach wegwerfen und schreiben Sie es so um es zu behalten, dann sind viele dieser Techniken übertrieben. Ich denke TDD (vielleicht eine gepaarte Version, die sich in Integrationstests kombiniert) wird immer wertvoll sein, aber darüber hinaus nicht unbedingt.

Wenn Sie jedoch wirklich Softwaresysteme entwerfen (und zumindest einige von dem, was Sie tun, könnten sich qualifizieren, selbst wenn das alles nicht funktioniert, zum Beispiel Datenbankmodell, Eingabebildschirme, Ergebnisverteilung), würde ich sagen genug von diesen Büchern, um anzufangen, und mach dir keine Sorgen darüber, es nicht immer richtig zu machen, stell sicher, dass du jede Woche messbare Fortschritte machst.

Übrigens können Entwurfsmuster hilfreich sein, um zu lesen, wie ähnliche Probleme behandelt werden, aber nicht "mit ihnen arbeiten" statt mit etwas anderem. Ihr Design ist vielleicht nicht gut für sich selbst, aber Muster kommen aus dem realen Design, nicht umgekehrt. Sie können sicherlich mehr objektorientierte Lösungen sehen, was Sie tun können, aber machen Sie sich keine Gedanken darüber, ob das, was Sie tun, zu einem Designmuster passt. Stellen Sie sicher, dass das, was Sie tun, gut wartbares Design zu seinen eigenen Bedingungen ist, und die Muster daraus fließen.

+0

+1 - Zustimmen 100% – Paul

+1

Ich schreibe Software für ein Forschungslabor selbst, ich kann sagen, dass es keine sichere Annahme ist, dass die "get it done quick" Haltung ein Hinweis darauf ist, dass der Umfang der Software klein ist oder "Skript-Ebene". Die meisten wissenschaftlichen Forscher betrachten die für ihre Forschung entwickelte Software oft als Mittel zum Zweck und kümmern sich nicht um die Qualität der Software, sondern nur um das Endergebnis. Dies führt häufig zu einem schlechten Software-Design aufgrund des Drucks, die Dinge auf kurze Sicht zu erledigen, sowie aufgrund doppelter Bemühungen in verschiedenen Projekten aufgrund fehlender modularer Implementierungen. –

+0

+1 @Mark, ja, der Code ist ziemlich komplex und kann nicht einfach in Umgebungen wie Matlab oder Mathematica ausgeführt werden. Also muss ich anfangen, den Code wiederzuverwenden (was mich dazu bringen wird, zu refactorieren). – bias

1

Sie können nicht alles auf einmal tun (Sie wussten das). Einige Techniken sparen Zeit, und TDD und Refactoring stehen auf dieser Liste ganz weit oben. Besonders mit TDD - machen Sie sich keine Sorgen darüber, wann Sie es tun, ob Sie es tun, wie es in Ihren Zeitplan passt; Mach es einfach. Je früher Sie beginnen, desto schneller sparen Sie Zeit.Sobald Sie diese Fertigkeit in der Hand haben, schreiben Sie, während Sie sich einer Aufgabe auf dem Legacy-Code nähern, Tests, um Sie zu schützen (nein, das ist keine TDD, sondern die Testschreibfähigkeiten, die Sie mit TDD verfeinert haben). Wenn Sie eine gute Abdeckung des Moduls haben, die Sie ändern müssen, können Sie es kostenlos umgestalten, indem Sie Ihre Tests häufig ausführen. Von den Büchern, die Sie erwähnen, in der Situation, die Sie beschreiben, ist die nächste, die ich empfehlen würde, Michael Feathers 'Effective with Legacy Code - es wird Ihnen die Tricks geben, die Sie weiterbringen.

Für den Moment, obwohl: TDD alles. Es wird Ihnen früher Zeit sparen, als Sie es sich vorgestellt haben, und Sie können diese Zeit nutzen, um mehr und bessere Techniken zu lernen.

1

Ich würde mit dem Refactoring-Buch beginnen (weil Sie erwähnt haben, dass es in Legacy-Code überschwemmt wurde) und versuchen, es Stunde um Stunde zu lesen. Wenn Sie das nächste Mal programmieren, suchen Sie nach Möglichkeiten, das Gelernte anzuwenden.

Sobald Sie das Gefühl haben, dass Sie etwas Zeit haben, schauen Sie sich die anderen Bücher an. Ich empfehle auch das Buch Code Complete zur Verbesserung Ihrer Fähigkeiten.

Verwandte Themen