Kích hoạt cá nhân của tôi để đóng gói là:
- Tôi thấy tôi lại sử dụng một số mã mà tôi đã từng viết cho một dự án phân tích dữ liệu khác.
- Tôi nghĩ rằng tôi sẽ cần phương pháp tôi vừa viết lại.
Một đồng nghiệp hỏi tôi mã. Một phần đáng kể của mã tôi viết ít nhất là theo yêu cầu của đồng nghiệp (những người sử dụng R nhưng không tự lập trình nhiều như vậy) cho bản thân tôi.
Tôi sử dụng các yêu cầu chính thức của một gói (tài liệu) để "buộc" tôi dọn dẹp và ghi lại mã của mình.
Tôi đồng ý với @JohnRos rằng có khá nhiều sự khác biệt giữa việc viết một gói và xuất bản gói.
Tôi thường đóng gói sớm, nhưng sau đó làm cho gói chỉ "bán công khai". Đó là, nó có thể có sẵn trên một máy chủ nội bộ (hoặc trên r-forge), vì vậy các đồng nghiệp của tôi có thể truy cập gói. Nhưng tôi chỉ xuất bản lên CRAN sau khi gói đã được sử dụng trong nhiều tháng hoặc thậm chí vài năm bởi các đồng nghiệp thân thiết. Điều này không mang đến tất cả các lỗi theo điểm số 3 của @Nick Cox, nhưng một số lượng khá lớn trong số đó.
Các phiên bản của gói (tôi đặt ngày sau dấu gạch ngang trong số phiên bản) giúp bạn dễ dàng sửa chữa mọi thứ ("để làm điều này và điều đó, đảm bảo bạn không gặp rắc rối ít nhất là phiên bản tuần trước")
Theo hợp đồng làm việc của tôi, chủ nhân của tôi có lời cuối cùng về quyết định liệu và làm thế nào một gói có thể được công bố ra thế giới bên ngoài.
Điều mà tôi không chưa có một chiến lược tốt để đóng gói là dữ liệu.
Bình luận cho danh sách lý do của bạn:
- sự không tồn tại của các gói khác trong cùng một trường con;
Không tìm thấy một gói làm những gì tôi cần cho tôi kích hoạt việc viết mã, nhưng nó không liên quan đến quyết định có nên gói hay không.
- nhu cầu trao đổi với các nhà nghiên cứu khác và cho phép tái sản xuất các thí nghiệm;
Dứt khoát. Có thể đã có nhu cầu chia sẻ giữa một số máy tính tôi sử dụng.
Và trong số những điểm có thể dẫn đến một quyết định trái ngược:
- một phần của các phương thức được sử dụng đã có trong một số gói khác;
bạn có thể nhập các phương thức đó vào gói / mã của mình: đây là một điểm chống lại việc viết mã đó, nhưng chỉ gián tiếp thực hiện với bao bì.
- số lượng chức năng mới không đủ để biện minh để tạo ra một gói độc lập mới.
Đối với tôi, không có số lượng chức năng tối thiểu để bắt đầu một gói. Theo kinh nghiệm của tôi, các gói có xu hướng phát triển "tự động". Ngược lại, sau khi tôi thấy mình vài lần tách một gói mới ra khỏi gói khác (vì ví dụ, một số chức năng của trình trợ giúp cuối cùng hóa ra cũng khác về mặt chủ đề và cũng hữu ích trong các tình huống khác), bây giờ tôi cũng khá tạo gói mới ngay lập tức.
Ngoài ra, nếu bạn không viết tài liệu và kiểm tra, đây có thể là một lượng công việc bị cấm khi số lượng hàm "đủ" để tạo gói được tích lũy.
(Nếu bạn viết chúng ngay lập tức, thì nỗ lực bổ sung để đưa nó vào một gói là không đáng kể một khi bạn biết quy trình làm việc).