Meine persönlichen Auslöser für die Verpackung sind:
- Ich verwende wieder Code, den ich einmal für ein anderes Datenanalyseprojekt geschrieben habe.
- Ich denke, ich brauche die Methode, die ich gerade geschrieben habe.
Ein Kollege fragt mich nach Code. Ein wesentlicher Teil des Codes, den ich schreibe, ist mindestens so viel auf Anfrage von Kollegen (die R verwenden, aber selbst nicht so viel programmieren) wie für mich.
Ich verwende die formalen Anforderungen eines Pakets (Dokumentation), um die Bereinigung und Dokumentation meines Codes zu erzwingen.
Ich stimme @JohnRos zu, dass es einen großen Unterschied zwischen dem Schreiben eines Pakets und dem Veröffentlichen des Pakets gibt.
Ich packe normalerweise früh, mache das Paket dann aber nur "halböffentlicher". Das heißt, es ist möglicherweise auf einem internen Server (oder auf r-forge) verfügbar, sodass meine Kollegen auf das Paket zugreifen können. Ich veröffentliche jedoch erst dann bei CRAN, wenn das Paket über Monate oder sogar einige Jahre von engen Kollegen verwendet wurde. Dies bringt nicht alle Bugs nach @ Nick Cox Punkt 3, aber eine ganze Menge von ihnen.
Die Versionen des Pakets (ich setze das Datum nach dem Bindestrich in die Versionsnummer) machen es einfach, Dinge zu reparieren ("um dies und das zu tun, stellen Sie sicher, dass Sie mindestens die Version der letzten Woche installieren")
Gemäß meinem Arbeitsvertrag hat mein Arbeitgeber das letzte Wort über die Entscheidung, ob und wie ein Paket nach außen veröffentlicht werden kann.
Die Sache, bei der ich noch keine gute Strategie für das Verpacken habe, sind Daten.
Anmerkungen zu Ihrer Liste der Gründe:
- das Nichtvorhandensein anderer Pakete in demselben Unterfeld;
Wenn ich kein Paket finde, das das tut, was ich für mich brauche , wird der Code geschrieben, aber das hat nichts mit der Entscheidung zu tun, ob ich paketiere oder nicht.
- Notwendigkeit des Austauschs mit anderen Forschern und Ermöglichung der Reproduzierbarkeit von Experimenten;
Endgültig. Möglicherweise muss ich das schon zwischen mehreren Computern teilen, die ich benutze.
Und zu den Punkten, die zu einer gegenteiligen Entscheidung führen könnten:
- ein Teil der verwendeten Methoden ist bereits in einigen anderen Paketen enthalten;
Sie könnten diese Methoden in Ihr Paket / Code importieren: Dies ist ein Punkt, der gegen das Schreiben eines solchen Codes spricht , hat aber nur indirekt mit dem Verpacken zu tun.
- Die Anzahl der neuen Funktionen ist nicht ausreichend, um die Erstellung eines neuen unabhängigen Pakets zu rechtfertigen.
Für mich gibt es keine Mindestanzahl von Funktionen, um ein Paket zu starten. Meiner Erfahrung nach wachsen Pakete "automatisch". Im Gegenteil, nachdem ich ein paar Mal ein neues Paket von einem anderen abgezweigt habe (weil sich zum Beispiel einige Hilfsfunktionen am Ende als thematisch anders und auch in anderen Situationen nützlich erwiesen haben), bin ich jetzt eher Erstellen Sie sofort neue Pakete.
Wenn Sie keine Dokumentation und Tests geschrieben haben, kann dies ein unerschwinglicher Arbeitsaufwand sein, wenn sich eine "ausreichende" Anzahl von Funktionen zum Erstellen eines Pakets angesammelt hat.
(Wenn Sie sie sofort schreiben, ist der zusätzliche Aufwand für die Erstellung eines Pakets vernachlässigbar, sobald Sie den Workflow kennen.)