Moje osobiste wyzwalacze do pakowania to:
- Zauważyłem, że ponownie używam kodu, który napisałem kiedyś do innego projektu analizy danych.
- Myślę, że będę potrzebować metody, którą właśnie napisałem.
Kolega prosi mnie o kod. Znaczna część kodu, który piszę, jest przynajmniej tyle na prośbę kolegów (którzy używają R, ale sami nie programują tak dużo) jak dla mnie.
Używam formalnych wymagań dotyczących pakietu (dokumentacji), aby „zmusić” mnie do wyczyszczenia i udokumentowania mojego kodu.
Zgadzam się z @JohnRos, że istnieje duża różnica między pisaniem pakietu a jego publikowaniem.
Zazwyczaj pakuję wcześnie, ale potem robię to tylko „półpubliczne”. Oznacza to, że może być dostępny na serwerze wewnętrznym (lub na r-forge), aby moi koledzy mieli dostęp do pakietu. Ale publikuję w CRAN dopiero po tym, jak pakiet był używany przez miesiące lub nawet kilka lat przez bliskich współpracowników. To nie wywołuje wszystkich błędów zgodnie z punktem 3 Nicka Coxa, ale spora ich liczba.
Wersje pakietu (wstawiam datę po myślniku w numerze wersji) ułatwiają naprawianie rzeczy („aby to zrobić i tamto, upewnij się, że instalujesz przynajmniej wersję z zeszłego tygodnia”)
Zgodnie z moją umową o pracę mój pracodawca ma ostatnie słowo na temat tego, czy i jak pakiet może zostać opublikowany na zewnątrz.
Rzeczą, gdzie ja nie jeszcze dobrą strategię na opakowaniu jest dane.
Komentarze do twojej listy powodów:
- brak innych pakietów w tym samym subpolu;
Nie znalezienie pakietu, który robi to, czego potrzebuję, powoduje napisanie kodu, ale nie ma to związku z decyzją, czy go spakować, czy nie.
- potrzeba wymiany z innymi badaczami i umożliwienia powtarzalności eksperymentów;
Zdecydowanie. Być może już potrzebuję współdzielić kilka komputerów, z których korzystam.
A wśród kwestii, które mogą prowadzić do sprzecznej decyzji:
- część zastosowanych metod jest już obecna w niektórych innych pakietach;
możesz zaimportować te metody do swojego pakietu / kodu: jest to argument przeciwko pisaniu takiego kodu, ale tylko pośrednio dotyczy pakowania.
- liczba nowych funkcji jest niewystarczająca, aby uzasadnić utworzenie nowego niezależnego pakietu.
Dla mnie nie ma minimalnej liczby funkcji do uruchomienia pakietu. Z mojego doświadczenia wynika, że pakiety rosną „automatycznie”. Wręcz przeciwnie, po tym, jak kilka razy rozgałęziłem nowy pakiet z innego (ponieważ np. Niektóre funkcje pomocnicze okazały się być tematycznie różne i przydatne również w innych sytuacjach), teraz jestem raczej natychmiastowe tworzenie nowych pakietów.
Ponadto, jeśli nie napisałeś dokumentacji i testów, może to być zbyt duża ilość pracy, gdy zgromadzi się „wystarczająca” liczba funkcji do utworzenia pakietu.
(Jeśli napiszesz je natychmiast, dodatkowy wysiłek włożenia go do pakietu jest znikomy, gdy poznasz przepływ pracy).