Wie können Entwickler-Skripte richtig verwaltet werden?

15

Entwickler erstellen Skripte, um ihre Arbeit zu erleichtern. Zum Beispiel, um Maven mit bestimmten Parametern auszuführen, nicht benötigte Hintergrundaufgaben zu beenden, die in der Entwicklung auftauchen, oder um eine Verbindung zu einem bestimmten Server herzustellen. Die Skripte sind keine Core-Build-Skripte und werden auch nicht in unserem Continuous Integration-Server verwendet.

Was ist der beste Weg, um sie zu verwalten? Um sie (vielleicht /scripts) in ein Verzeichnis zu legen und in Git einzuchecken? Um sie auf einem Dateiserver separat zu verwalten?

Das Argument für die Behandlung als Quellcode ist, dass sie Quelle sind und sich ändern können. Das Argument dafür ist, dass es sich nur um Hilfstools handelt und nicht alle Entwickler ein bestimmtes Skript benötigen (z. B. Linux-spezifische Skripts, bei denen einige Entwickler unter Windows arbeiten).

Joshua Fox
quelle
7
Praktisch jedes Projekt enthält Funktionen, mit denen nur einige Entwickler jemals fertig werden. Das ist kein Grund, es geheim zu halten. "Hüte dich vor einem Kerl in einem Raum!" (Joel Spolsky)
Kilian Foth
1
Wenn Sie sie in die Quellcodeverwaltung versetzen, stellen Sie sicher, dass Sie nach einem Absturz einsatzbereit sind. Es ist von Vorteil, wenn Sie Ihren aktuellen PC in den Müll werfen, einen neuen mitnehmen und innerhalb einer Stunde produktiv arbeiten können.
Pieter B
"Passen Sie von einem Kerl in einem Raum auf!" (Steve McConnell, 1993) @KilianFoth
kubanczyk

Antworten:

23

Entwicklerskripte gehen auch in die Versionskontrolle, da diese Skripte in der Regel auch von den Elementen in der Versionskontrolle abhängen, z. B. Dateipfade.

Wenn diese Skripte versioniert sind, sollten sie auch für alle Entwickler funktionieren, um zu vermeiden, dass jeder Entwickler seine eigenen Skripte schreibt, was zur Wartungshölle wird.

Zusätzlich werden Bugfixes oder Verbesserungen dieser Skripte über die Versionskontrolle automatisch an jeden Entwickler verteilt.

Simon
quelle
10

Zusätzlich zu @ simons Antwort.

Bei der Softwareentwicklung geht es nicht nur um Programmieren, Entwerfen oder Modellieren. Es gibt eine Vielzahl von Aufgaben, die wir kontinuierlich während des Arbeitstages ausführen. Sie haben bereits eines erwähnt - Erstellen des Projekts außerhalb der IDE -, aber es gibt noch viele weitere.

Erfahrene / proaktive Entwickler neigen dazu, diese Aufgaben zu automatisieren. Einige erstellen sogar Tools, wenn diese Aufgaben Teil der SDLC werden, und sind mühsam - und fehleranfällig - von Hand zu erledigen. Programme sind gut darin, sich wiederholende Jobs auszuführen, egal wie langweilig sie sind. Wir - Menschen - sind nicht so gut.

Diese Tools / Skripte haben andere positive Nebenwirkungen

  1. Produktivität
  2. Wissenstransfer
  3. Autonomie (für Neueinsteiger)

Ja, die Skripte sollten sich im SCM befinden und ein weiteres Tool in der Toolbox des Entwicklers sein.

In Bezug auf den Ordner /scriptswürde ich sagen, dass es egal ist. Der Einfachheit halber belasse ich sie im Stammverzeichnis des Projekts, sodass alle in den Skripten deklarierten Routen relativ zum Projektordner sind. Wenn ich Zugriff auf externe Ordner oder Dateien benötige, erstelle ich Softlinks .

Beachten Sie Folgendes, bevor Sie die Skripte in den SCM einchecken.

  • Für Sicherheit, stellen Sie sicher , haben die Skripte keine Anmeldeinformationen fest einprogrammiert - im Idealfall sollten die Skripte auch parametrisiert werden -

  • Stellen Sie sicher, dass die Skripte keine ungewöhnlichen Aktionen ausführen, beispielsweise um Befehle auszuführen, die nicht rückgängig gemacht werden können (die typischsten rm -rf).

  • Da diese Teil der Projektquelle werden, wird die Dokumentation sehr geschätzt.

  • Scripting ist keine Hexerei. Machen Sie Skripte kurz. Anstatt sie alle zu regieren ... und in der Dunkelheit zu binden , mache mehr, kleiner und prägnant. Als ob Sie SRP anwenden würden.

Laiv
quelle
4

Ich werde eine etwas negativere Meinung abgeben. Einerseits sollten generische, effektive und nützliche Entwicklerskripte natürlich mit anderen Entwicklern geteilt werden, und der beste Weg, dies zu tun, besteht darin, sie mit dem Code im selben Repository zu haben.

Allerdings würde ich eine hohe Messlatte für einen Einstieg für mit Skripten begangen werden. Skripte sind wie die Software selbst Code. Das heißt, sie müssen ähnlich wie andere Code-Teile behandelt werden:

  • Code-Überprüfung durchlaufen
  • Wenn möglich getestet und automatisiert
  • Berücksichtigt, wenn Änderungen an der Codebasis vorgenommen werden (insbesondere, wenn ein Skript von vielen Entwicklern verwendet wird, wird eine Änderung, die das Skript bricht, viel Ärger verursachen)
  • Gepflegt (mit allem, was dazugehört - Priorisierung, Zeit, Dokumentation usw.).

Es gibt eine Reihe weiterer Überlegungen, die sich eher auf Skripts als auf die Software selbst beziehen:

  • In erster Linie ist es viel schwieriger, Unternehmen und Interessengruppen davon zu überzeugen, in die Pflege von Skripten zu investieren, die Entwicklern das Leben erleichtern. Das heißt, es ist schwieriger, die Zeit zu bekommen, um die oben genannten Kriterien zu erfüllen. Es ist einfach, ein Skript zu schreiben, das für Ihre Umgebung geeignet ist, es jedoch zu parametrisieren, stabil zu machen und zu dokumentieren, dauert viel länger. Dies bedeutet, dass Skripte zu totem Code werden können und werden, es sei denn, ein Entwickler kann rechtfertigen, dass das Skript aktuell ist.
  • Es ist viel unwahrscheinlicher, dass mehrere Entwickler mit einem komplizierten Skript vertraut sind, um es zu warten, oder dass mehrere Entwickler das Gefühl haben, Eigentümer des Codes zu sein. Wenn der ursprüngliche Entwickler das Unternehmen verlässt, kann es schwierig sein, eine andere Person zu finden, von der er den Besitz übernehmen kann (und die Zeit zu finden und zu rechtfertigen, um zu lernen, wie das Skript funktioniert, kann noch schwieriger sein).
  • Es ist viel wahrscheinlicher, dass ein Skript in irgendeiner Weise mit dem Entwicklercomputer und der Buildumgebung interagiert. Es ist auch sehr wahrscheinlich, dass Sie mehrere Entwickler mit mehreren unterschiedlichen Umgebungen haben. Wenn ein Skript eine Umgebung durcheinanderbringt, weil sie nicht ordnungsgemäß gewartet wurde oder ein Eckfall nicht berücksichtigt wurde, brechen Sie nicht nur einen nächtlichen Build Ihrer Software ab, sondern kosten möglicherweise einen Entwickler einen Tag oder mehr Arbeit, um ihre zu erhalten Umwelt wieder normal. Dies kann zu Blutverlust und Vertrauensverlust führen.
  • Da Skripte häufig außerhalb der Software selbst ausgeführt werden, kann ihre Verwaltung eine Herausforderung darstellen. Wenn die Skripte nicht durch Automatisierungen ausgeführt werden, können sie schnell veralten oder in Vergessenheit geraten. Zu diesem Zeitpunkt sind sie toter Code und nur noch technische Schulden, für deren Bereinigung sich jemand Zeit nehmen muss.

Zusammenfassend kann gesagt werden, dass Skripte für einen einzelnen Entwickler sehr hilfreich sein können, aber das Freigeben als Teil der Codebasis selbst kann eine viel schwierigere Aufgabe sein und möglicherweise mehr Probleme verursachen, als gelöst sind.

Daniel
quelle
Ich habe zugestimmt. Irgendwie delegieren wir hier die Skripte an leitende Profile oder Entwickler mit einem Hintergrund in dieser Art von Entwicklungen. Die 3 genannten positiven Nebenwirkungen sind nur bei minimaler Qualität möglich :-). Shellskripte werden von Entwicklern, die sich nur auf ihr Haupt-SDK konzentrieren, wirklich unterschätzt. Die Betriebssystemschicht kann eine Menge für uns tun.
Laiv