2010-05-09 12 views
8

Ho intenzione di avviare una libreria di frammenti di codice riutilizzabili per un po 'e non sembra mai arrivare a questo. Al momento tendo solo ad avere alcune classi/file transitori che trascino fuori da vecchi progetti.Avvio di un repository personale di codici riutilizzabili

Credo che i miei principali problemi sono:

  • da dove cominciare. Quale struttura dovrebbe prendere il repository ? Dovrebbe essere una libreria compilata (dove appropriato) o solo classi/file Posso passare a qualsiasi progetto? O un progetto di biblioteca che può essere incluso? Quali sono le implicazioni della licenza ?

  • In base alla mia esperienza, una libreria compilata/ridotta diventerà rapidamente fuori dalla data e la fonte andrà persa. Quindi Sono propenso alla fonte che posso esportare da SVN e includere in qualsiasi progetto .

  • Proprietà intellettuale. Sono employeed, quindi gran parte del codice I write non è il mio IP. Come posso garantire che non offra il mio IP personale utilizzandolo su progetti in lavoro ea casa ? Sto pensando che il modo migliore sarebbe di concedere in licenza la mia biblioteca con una licenza sorgente aperta e assicurarmi di aggiungere solo al mio tempo utilizzando la mia attrezzatura e quindi assicurandomi che se lo uso in un progetto di lavoro le stesse regole si applicano come se fossi utilizzando una libreria di terze parti.

  • Scrivo in molte lingue diverse e spesso richiederei due o più parti di questa libreria.

  • devo cercare di implementare alcuni i modelli di progetto e un progetto di base per ciascuno dei miei scelti componenti e linguaggi riutilizzabili?

Qualcun altro ha questo tipo di libreria e come organizzarlo e aggiornarlo?

+0

Questo non è linguaggio indipendente. Il modo in cui progetta e crei una libreria dipende molto dalla lingua o dalle lingue che stai utilizzando. –

+1

È indipendente dal linguaggio. Non sto parlando di una "biblioteca" come in jQuery o Lucene, sto parlando di organizzare il mio repository SVN per includere frammenti di codice per più lingue che posso usare in molti scenari diversi. Non voglio una DLL che inserisco nei progetti. Scusa se questo non è chiaro. –

risposta

3

Numero di regola uno. Se vuoi usarlo per te, non usarlo al lavoro e non lavorare su di esso al lavoro. Anche in quelle condizioni, alcuni datori di lavoro penseranno di possederlo anche se ci hai lavorato durante il periodo di tempo (orario del calendario) per il quale hai lavorato. Alcuni potrebbero persino essere più ridicoli di così. Quindi non dire nemmeno che esiste.

Detto questo, metterlo sotto una licenza BSD su sourceforge può consentirvi di utilizzarlo con il datore di lavoro NEXT a patto di chiarire le regole di base in anticipo - dire loro che state acquisendo una tale libreria e possibilmente di averla scritta.

IANAL - Io non sono un avvocato. Si consiglia di consultarne uno.

Preferisco lavorare sul mio tempo e sulle mie macchine e non parlarne mai. Poi, quando le aziende mi chiedono di firmare una di quelle "possediamo tutte le tue cose", mi assicuro che non si applichi a roba in casa - questo in alcuni casi ha richiesto di essere modificato.Anche in quel caso, se volessi utilizzare il codice al lavoro, temerei che potrei perdere la proprietà perché alcune di quelle linee sono state sfocate.

Non preoccuparti di reinventare la ruota. Ti pagano per scrivere software. E quando la vita prende davvero piede, avrai comunque meno tempo per la programmazione per hobby ;-)

1

Come diceva Neil, molti dettagli di implementazione della risposta dipendono dalla tua lingua.

Tuttavia, fate 2 punti molto validi:

  • è meglio avere la libreria in forma di codice sorgente anche per linguaggi compilati, per ovvie ragioni

  • Se si desidera mantenere l'IP e usarlo al di fuori del lavoro, quindi farlo al 100% al di fuori del lavoro, licenza con una licenza molto permissiva. Qualcosa come il zlib license potrebbe essere appropriato.

Un altro punto però - Si sta meglio se si assicurarsi che il datore di lavoro è OK con l'utilizzo di quel codice !!!. È possibile pubblicarlo in modo anonimo/con uno pseudonimo se tale permesso è difficile/non ottenibile.

2

mi piacerebbe andare con un approccio leggero:

  • Usare Git o Mercurial, possibilmente con Dropbox, se non si vuole ha ospitato: si vuole il controllo di versione, non importa quello che stai facendo, e distribuito il controllo della versione è particolarmente perfetto se non si intende condividere; nessun deposito centrale necessario
  • Salva qualsiasi cosa tu usi. Non perdere tempo a creare codice perché pensi di riutilizzarlo in seguito; aspetta che tu stia per scriverlo due volte prima di aggiungere qualsiasi lavoro. Quindi lancia il lavoro duplicato e sarai pronto se succede una terza volta.
  • Creare una directory per lingua; Non è possibile riutilizzare Java in Python, dopo tutto

Ecco uno struttura di directory si potrebbe provare:

+ 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

Il problema con la tua idea, e con il concetto di frammenti di codice, in generale, è che cade male se il tuo frammento ha un bug in esso. Per l'approccio snippet, dovrai correggere il bug nel codice sorgente di tutte le applicazioni che hanno utilizzato lo snippet. Se invece costruisci librerie binarie, devi semplicemente correggere il bug una volta nel codice della libreria, testarlo lì, ricollegare, eseguire i test di regressione della tua app e il gioco è fatto. Questo è il motivo per cui i programmatori professionisti abracciano frammenti di codice.

+0

Commento molto equo, forse gli schemi sono meglio lasciati nella mia testa. –

Problemi correlati