2010-05-09 28 views
8

Tôi đã có ý định bắt đầu một thư viện các đoạn mã có thể sử dụng lại được một thời gian và không bao giờ có vẻ như trở nên tròn. Tại thời điểm này tôi chỉ có xu hướng có một số lớp/tập tin tạm thời mà tôi kéo ra khỏi các dự án cũ.Bắt đầu một kho lưu trữ mã cá nhân có thể phục hồi lại được

Tôi nghĩ vấn đề chính của tôi là:

  • Bắt đầu từ đâu. Cấu trúc nào cần kho lưu trữ của tôi? Nếu nó là một thư viện được biên soạn (nếu thích hợp) hoặc chỉ các lớp/tệp tôi có thể thả vào bất kỳ dự án nào? Hoặc dự án thư viện có thể được bao gồm? Các tác động cấp phép của là gì?

  • Theo kinh nghiệm của tôi, thư viện được xây dựng/rút gọn sẽ nhanh chóng trở thành trong số ngày và nguồn sẽ bị mất. Vì vậy, Tôi đang hướng tới nguồn mà tôi có thể xuất khẩu từ SVN và bao gồm trong bất kỳ dự án nào.

  • Sở hữu trí tuệ. Tôi đang sử dụng , vì vậy rất nhiều mã tôi viết không phải là IP của tôi. Làm thế nào tôi có thể đảm bảo rằng tôi không cung cấp địa chỉ IP của riêng mình sử dụng nó trên các dự án trong công việc và tại nhà? Tôi nghĩ cách tốt nhất là sẽ cấp phép cho thư viện của tôi bằng giấy phép nguồn mở và đảm bảo rằng tôi chỉ thêm vào thời gian đó bằng thiết bị của riêng mình và do đó đảm bảo dự án làm việc các quy tắc tương tự áp dụng như thể tôi là sử dụng thư viện của bên thứ ba.

  • Tôi viết bằng nhiều ngôn ngữ khác nhau và thường yêu cầu hai hoặc nhiều hơn phần của thư viện này.

  • Tôi có nên nhìn vào thực hiện một vài dự án mẫu và một dự án cốt lõi cho mỗi lựa chọn tái sử dụng thành phần và ngôn ngữ của tôi không?

Có ai khác có loại thư viện này và cách bạn tổ chức và cập nhật nó?

+0

Đây không phải là ngôn ngữ bất khả tri. Cách bạn thiết kế và tạo một thư viện phụ thuộc rất lớn vào ngôn ngữ bạn đang sử dụng. –

+1

Đó là ngôn ngữ bất khả tri. Tôi không nói về một "thư viện" như trong jquery hay Lucene, tôi đang nói về việc tổ chức kho SVN của riêng tôi để bao gồm các đoạn mã cho nhiều ngôn ngữ mà tôi có thể sử dụng trong nhiều kịch bản khác nhau. Tôi không muốn một DLL mà tôi chỉ cần thả vào các dự án. Xin lỗi nếu điều đó không rõ ràng. –

Trả lời

3

Quy tắc số một. Nếu bạn muốn sử dụng nó cho chính mình, không sử dụng nó tại nơi làm việc và không làm việc trên nó tại nơi làm việc. Ngay cả trong những điều kiện đó một số nhà tuyển dụng sẽ nghĩ rằng họ sở hữu nó ngay cả khi bạn làm việc trên nó trong khoảng thời gian (thời gian lịch) bạn đã làm việc cho họ. Một số thậm chí có thể vô lý hơn thế. Vì vậy, thậm chí không đề cập rằng nó tồn tại. Có thể nói rằng, đặt nó theo giấy phép BSD trên sourceforge có thể cho phép bạn sử dụng nó với bạn NEXT nhà lao động cung cấp cho bạn làm rõ các quy tắc mặt đất trả trước - nói với họ bạn đang grabbing một thư viện và có thể bạn đã viết nó.

IANAL - Tôi không phải là luật sư. Bạn có thể muốn tham khảo ý kiến ​​với một.

Tôi thích làm việc trên công cụ của mình vào thời gian và máy của tôi và không bao giờ đề cập đến nó. Sau đó, khi các công ty yêu cầu tôi ký một trong những "chúng tôi sở hữu tất cả mọi thứ của bạn" Tôi đảm bảo rằng nó không áp dụng cho công cụ ở nhà - điều này đã yêu cầu sửa đổi nó trong một số trường hợp.Ngay cả trong trường hợp đó, nếu tôi muốn sử dụng mã tại nơi làm việc tôi sẽ lo lắng rằng tôi có thể mất quyền sở hữu vì một số dòng đó đã bị mờ.

Đừng lo lắng về việc phát minh lại bánh xe. Họ trả tiền cho bạn để viết phần mềm. Và khi cuộc sống thực sự bắt đầu, bạn sẽ có ít thời gian hơn cho việc lập trình sở thích ;-)

1

Như Neil đã nói, rất nhiều chi tiết về câu trả lời phụ thuộc vào ngôn ngữ của bạn.

Tuy nhiên, bạn thực hiện 2 điểm rất hợp lệ:

  • nó tốt hơn để có các thư viện ở dạng mã nguồn ngay cả đối với ngôn ngữ biên dịch, vì lý do hiển nhiên

  • Nếu bạn muốn giữ lại IP và sử dụng nó ngoài công việc, sau đó làm điều đó 100% bên ngoài công việc, giấy phép với một số giấy phép rất dễ dãi. Một cái gì đó giống như zlib license có thể là thích hợp.

Một điểm nữa mặc dù - Bạn nên tắt nếu bạn đảm bảo rằng chủ nhân của bạn không thể sử dụng mã đó !!!. Bạn có thể xuất bản nó nặc danh/dưới bút danh nếu quyền đó khó/không có được.

2

Tôi muốn đi với một cách tiếp cận nhẹ:

  • Sử dụng Git hoặc Mercurial, có thể với Dropbox nếu bạn không muốn nó tổ chức: bạn muốn kiểm soát phiên bản không có vấn đề gì bạn đang làm, và phân phối kiểm soát phiên bản đặc biệt hoàn hảo nếu bạn không có kế hoạch chia sẻ; không cần kho lưu trữ trung tâm
  • Lưu bất kỳ thứ gì bạn sử dụng. Đừng dành thời gian tạo mã vì bạn nghĩ bạn sẽ sử dụng lại mã sau; đợi cho đến khi bạn chuẩn bị viết nó hai lần trước khi bạn thêm bất kỳ tác phẩm nào. Sau đó, ném tác phẩm trùng lặp vào đó và bạn sẽ sẵn sàng nếu nó xảy ra lần thứ ba.
  • Tạo một thư mục cho mỗi ngôn ngữ; bạn không thể tái sử dụng Java trong Python, sau khi tất cả

Dưới đây là một cấu trúc thư mục bạn có thể thử:

+ src 
| + python 
| |  + emailing 
| |  | // the source goes in here 
| |  + quick-profiling 
| + java 
| + c++ 
+ notes 
    // This may not be your thing, but it's a convenient place for them 
1

Vấn đề với ý tưởng của bạn, và với các khái niệm về đoạn mã nói chung, đó là nó rơi xuống tồi tệ nếu đoạn của bạn có một lỗi trong đó. Đối với phương pháp đoạn mã, bạn sẽ phải sửa lỗi trong mã nguồn của tất cả các ứng dụng sử dụng đoạn mã. Mặt khác, nếu bạn xây dựng các thư viện nhị phân, bạn chỉ cần sửa lỗi một lần trong mã thư viện, kiểm tra nó ở đó, liên kết lại, chạy thử nghiệm hồi quy của ứng dụng và bạn đã hoàn thành. Đây là lý do tại sao các lập trình viên chuyên nghiệp abhor đoạn mã.

+0

Nhận xét rất công bằng, có lẽ các mô hình tốt hơn còn lại trong đầu tôi. –

Các vấn đề liên quan