Firmate ciascuno dei vostri file sorgente con il vostro nome? [duplicare]

49

Uno dei miei colleghi ha l'abitudine di mettere il suo nome e indirizzo email nella testa di ogni file sorgente su cui lavora, come metadati dell'autore. Io non sono; Preferisco affidarmi al controllo del codice sorgente per dirmi a chi dovrei parlare riguardo un determinato set di funzionalità.

Devo firmare anche i file su cui lavoro per altri motivi? Fai? Se sì, perché?

Per essere chiari, questo è in aggiunta a qualsiasi metadata per le informazioni sul copyright e sulle licenze è incluso e si applica sia al codice open source che al codice proprietario.

    
posta regularfry 17.08.2011 - 16:12
fonte

14 risposte

76

Non proprio, no. Ci sono un paio di motivi per cui:

  • Il tuo sistema di controllo della versione (VCS) memorizza già questi metadati . Per esempio. ogni commit in git ha un campo per il nome che ha effettuato il commit. I sistemi di controllo delle versioni competenti consentono di vedere chi ha apportato una modifica a una specifica riga di codice. Quella funzionalità è solitamente chiamata blame che è un termine improprio poiché, invece di trovare qualcuno che faccia effettivamente incolpare , è molto utile per trovare qualcuno con cui parlare di un problema che si ha nel contesto di il pezzo di codice).

    Ho visto alcuni commenti di intestazione che hanno anche il log della cronologia, ma che possono essere facilmente estratti da un VCS.

  • Scoraggia la collaborazione del codice . "Ehi, qualcuno l'ha fatto ... forse non dovremmo toccare il suo codice". Se non esiste una proprietà esclusiva del codice su alcuni file del codice sorgente, allora la possibilità più alta che qualcun altro lo cambierà, il che a sua volta facilita e abilita il refactoring.

Per quanto riguarda le informazioni sul copyright?

Anche se per motivi di copyright potresti voler aggiungere il nome della società come detentore del copyright nei commenti di intestazione (ovvero banner di copyright). Se si tratta di un progetto open source, spesso è il nome dell'organizzazione del manutentore o un solo manutentore. Tuttavia è ormai prassi comune inserire queste informazioni in file di testo nella radice del progetto. Puoi vedere questi file di testo fatti su progetti open source con nomi come README , LICENSE e / o CONTRIBUTORS .

Che dire degli script di database?

Si potrebbe argomentare che è necessario fare registri di cronologia nei commenti di intestazione con gli script SQL del database sebbene ultimamente con gli strumenti di migrazione del database abbia reso questa pratica obsoleta. Gli strumenti di migrazione del database di solito tengono traccia di quali migrazioni sono state eseguite e possono eseguire rollback secondo necessità. Questi strumenti sono più flessibili da utilizzare rispetto a un file di testo.

    
risposta data 17.08.2011 - 16:21
fonte
23

Non lo faccio, in particolare come hai detto perché è tracciato nel controllo del codice sorgente. Ogni volta che informazioni come questa vengono conservate in due parti (controllo del codice sorgente e il file stesso come hai detto tu), diventeranno fuori sincrono . Dal momento che il controllo del codice sorgente aggiunge automaticamente le informazioni, non penso ci sia alcun motivo per includerlo direttamente.

Detto questo, se c'è qualcosa di non ovvio che stai aggiungendo, o potrebbe giustificare ulteriori discussioni, penso che valga la pena aggiungere commenti attorno a un blocco di codice che indica la modifica apportata e perché con il tuo nome.

    
risposta data 17.08.2011 - 16:19
fonte
15

Sì, firmo il mio codice. Sono orgoglioso di produrre un lavoro di qualità.

    
risposta data 18.08.2011 - 00:02
fonte
14

Should I also be signing files I work on for any other reasons? Do you? If so, why?

C'è un motivo per mettere il tuo nome nei tuoi file. Il libro "The Pragmatic Programmer" lo incoraggia, perché gli autori presumono che scriverai un codice migliore quando il tuo nome è scritto su di esso, così puoi essere orgoglioso del tuo lavoro. I programmatori non vorrebbero firmare pezzi di codice disordinati, vero?

Bene, ecco dove colpisce la realtà. La maggior parte delle volte , solo l'autore iniziale è nei file e, come altri qui indicati, queste informazioni saranno fuori sincrono a breve. E non impedisce il codice disordinato. La maggior parte semplicemente ignora il fatto che il loro nome è elencato nell'intestazione del file. Questo non è affatto un consiglio pragmatico, da un libro altrimenti eccellente, anche se per alcune persone può fare la differenza.

Un altro motivo per mantenere il tuo nome nei file è quando vuoi pubblicare il codice sorgente, ad esempio per un progetto open source. Questo può essere visto come una sorta di pubblicità.

Ma nei casi più , questa informazione è solo un rumore ridondante.

    
risposta data 17.08.2011 - 16:35
fonte
9

git blame (o svn blame se devi) è uno strumento molto migliore per dedurre la "proprietà" del codice rispetto a una linea singola nella parte superiore di un file, specialmente dopo che un progetto è cresciuto di alcuni baffi.

    
risposta data 17.08.2011 - 16:34
fonte
5

No, non lo so. Tuttavia, qualsiasi intestazione obbligatoria (un particolare commento di intestazione standard aziendale fa parte delle linee guida dello stile di codifica) è incluso, quindi se lo richiedono come parte di essi, allora lo farei. Se non hai stili di programmazione, di programma o di codifica aziendale, dovresti, e ogni commento di intestazione del file obbligatorio dovrebbe essere chiaramente definito.

Come hai detto, il controllo della versione dovrebbe gestirlo. Quando altre persone toccano il file, devono aggiornare un campo già tracciato automaticamente dal controllo di versione, che identifica esattamente ciò che è stato cambiato e chi ha apportato la modifica tra ogni versione? Sembra un sovraccarico, soprattutto se uno sviluppatore si dimentica di aggiornarlo e gli sviluppatori futuri passano per l'intestazione anziché cercare nel controllo di versione.

    
risposta data 17.08.2011 - 16:17
fonte
5

Sì. Il motivo non è perché voglio "possederlo" in qualche modo, mettendo il mio nome su di esso. Se qualcuno volesse modificare quella linea, me ne potrebbe importare di meno. E dire che il controllo della versione memorizzerà i miei dati è vero, e tuttavia inutile se qualcuno non ha accesso al mio repo.

Lavoro per una grande azienda e il mio codice vaga dalla business unit alla business unit. Il povero schmuck che ottiene il codice da un ragazzo, che l'ha preso da un altro ragazzo, che l'ha preso dal mio capo idiota, non avrà la più pallida idea di chi chiamare per il supporto a meno che non lasci un suggerimento nel codice stesso.

E, poiché non mi aspetto di rimanere qui per sempre, lascio le reali informazioni di contatto, così le persone possono contattarmi dopo che ho lasciato il mio attuale lavoro se hanno bisogno di qualcosa. È solo cortesia.

    
risposta data 17.08.2011 - 21:37
fonte
5

Perché vorresti un commento con il nome di qualcuno inserito nel codice sorgente?

Se non offre informazioni sull'intento del codice e a meno che non ti sforzi di ricordare il tuo nome non ha alcun valore che io possa vedere.

Sarebbe rimosso al prossimo commit se lo avessi trovato.

Ovviamente, i commenti sono generalmente un odore in sé, ma questo è un altro argomento:)

    
risposta data 25.08.2011 - 08:25
fonte
4

Il mio IDE inserisce automaticamente i nomi utente nella parte superiore dei file quando crei una nuova classe. In realtà è piuttosto noioso, perché ignoriamo l'intestazione.

hm, forse dovremmo istituire un nuovo standard di codifica in cui tutti devono disattivarlo nelle preferenze del proprio IDE e / o eliminare l'intestazione automatica ...

    
risposta data 17.08.2011 - 16:38
fonte
3

Nella mia azienda, utilizziamo un'intestazione standardizzata con una nota di copyright per il nome della nostra società e campi chiave per il controllo della versione, come Revisione, Data, Id

    
risposta data 17.08.2011 - 16:35
fonte
1

Per noi è normale inserire il nostro nome nel codice sorgente e inoltre, se lo modifichiamo, contrassegnare tali modifiche con un numero di modifica e il nostro nome rispetto al numero di modifica.

TBH, questo è il tipo di cosa che mi sarei aspettato di vedere negli standard di codifica interna.

    
risposta data 17.08.2011 - 16:15
fonte
0

Penso che non sia una cattiva abitudine.

Altri sostengono che VCS lo farà per te. Bene, fino a un certo punto, è vero.

Se tuttavia rilasci codice sotto un copyleft debole (MIT o qualsiasi altra cosa), puoi quasi scommettere che qualcuno integrerà un'istantanea del tuo codice nella loro base di codice e apporterà le proprie modifiche. Non saranno in grado di distinguere tra i commenti originali e i commenti della persona che ha effettuato il check-in originale.

La stessa cosa si applica quando le basi di codice si spostano su altri VCS (ad esempio da CVS a git). Non puoi davvero sapere se tutti i metadati lo faranno nel nuovo VCS (mi aspetterei che ci sia un modo per migrarlo).

Quindi per rispondere alla domanda:

Quando aggiunge un valore significativo per conoscere l'autore di un pezzo di codice (che non è sempre il caso), piuttosto che aggiungere l'autore direttamente nel file sorgente è una buona idea. Ciò non significa che devi documentare e firmare ogni singola modifica apportata a un file sorgente.

    
risposta data 25.08.2011 - 14:46
fonte
0

Sono sicuro che otterrò punti negativi qui.

Metto il mio nome nei file che ho creato. Includo anche il nome e l'indirizzo della società, una dichiarazione sul copyright, una descrizione dello scopo del file, il NOME originale del file (nel file) e una breve cronologia delle principali revisioni.

Perché faccio questo:

  1. Il nome dell'azienda, l'indirizzo e la dichiarazione sul copyright rendono molto facile la produzione in tribunale, qualora ciò fosse necessario, e mostra data / ora di creazione, proprietà, ecc. ai fini del copyright. Senza questa informazione NEL FILE, ti affidi a fumo e specchi per convincere un giudice che non sa nulla di software o VCS.

  2. Mettere il nome dell'autore originale al momento della creazione riguarda la responsabilità. Se il tuo VCS fornisce le stesse informazioni, è bello ma non è nella tua faccia. Se la cosa viene modificata in seguito e qualcuno aggiunge bug, il VCS racconta la storia. Se sei orgoglioso del tuo lavoro, non nasconderlo. [Un certo numero di società commerciali richiedono questo tipo di cose per semplici motivi di responsabilità.]

  3. Inserisco il nome del file nel file perché queste cose cambiano. È un dolore per aggiornare questo quando il nome cambia, e non sono più sicuro del valore. Tuttavia, aiuta a mettere insieme l'intera immagine quando guarda all'origine.

  4. Ogni file ha un sommario in un para o in 2 del suo scopo. Se un file di origine non ha scopo, non crearlo. Se ha uno scopo, dimmi cos'è - NON FARE ME GUESS . Circa il 95% di tutto il codice open source che ho incontrato non ha uno scopo dichiarato nei file sorgente e questo mi fa impazzire. Non voglio indovinare lo scopo del nome o del contenuto del file, per gridare ad alta voce - dimmi. Non mettere in uno scopo è semplicemente PENISCENZA. (E non aggiornare lo scopo è anche la pigrizia.)

  5. Pre VCS Ho usato per mettere una storia completa nei commenti all'inizio. Post VCS L'ho fatto anche per un po '. Mostra la cronologia nel file senza dover andare a scavare da nessun'altra parte. È tuttavia un dolore così fa questo e un valore basso. Usa la tua cronologia VCS per questo. Ma nelle intestazioni se fai un grande cambiamento (enorme refactoring, re-proposizione, ecc.) - quindi fai un appunto a beneficio degli altri. (E come l'autore originale, inserisci il tuo nome.) Ovviamente è un giudizio su cosa è maggiore e cosa no. Ma questa è una cortesia per quelli che vengono dopo di te.

Ho anche ampi commenti nel file che spiegano cosa fanno le cose - i commenti per esempio su interfacce, API, intestazioni, sono essenziali per un utente della tua API o funzione o metodo per sapere cosa sta succedendo, e in particolare qualsiasi note speciali o effetti collaterali.

All'interno del codice, i blocchi principali ottengono un commento che descrive cosa fa quel blocco. Ciò consente una lettura del codice per l'intento, rapidamente, senza dover scavare nei dettagli sanguinosi di alcune variabili dichiarate 15 pagine prima. (Dimmi cosa fa, e perché . Non dirmi come . Posso capire come dal codice.)

Sulla base di ciò che vedo da altri che lasciano commenti qui, sembrerebbe che molti di quelli eliminerebbero circa il 90% dei commenti che scrivo. Vergogna ... aggiunge l'entropia dell'universo.

    
risposta data 21.12.2011 - 07:06
fonte
-2

L'unica ragione per mettere il tuo nome in cima a un file è quando si tratta di un compito a casa e il tuo professore lo richiede per tenere a mente quale studente ha scritto il codice che sta guardando su una stampa.

    
risposta data 21.12.2011 - 06:05
fonte

Leggi altre domande sui tag