Devo cambiare il nome dell'autore nel file di classe se apporto più dell'80% delle modifiche?


18

Sto eseguendo il refactoring di una serie esistente di classi di test Java per i test automatici dell'interfaccia utente. A volte finisco per fare enormi cambiamenti nel file di classe o per rinnovarlo completamente. Questo mi fa pensare che quando sto riscrivendo l'intera classe, dovrei cambiare il nome dell'autore nella sezione dei commenti con il mio?

Sono avido? o sarà utile per uno vedere il mio nome e chiedermi in caso di dubbi?


17
Stai utilizzando il controllo versione? Trovo che i log di commit siano un meccanismo di tracciamento più affidabile per la paternità (se c'è mai un legittimo bisogno di scoprirlo ...)
rwong

5
Il nome dovrebbe essere lì se ha qualche tipo di valore per il codice. Cioè persona di contatto. Responsabilità e così via. E in tal caso, attaccalo con una data di fine e un nuovo nome in allegato.
Indipendente il

15
Qual è lo scopo di avere il nome di un autore nei file di classe?
BЈовић,

2
Se il file ha un segnaposto per un nome autore, è probabile che abbia anche un segnaposto per il registro delle modifiche. Vorrei inserire il mio nome nel registro delle modifiche anziché nell'autore originale. Ad ogni modo, non lascio mai le mie impronte digitali sul codice che scrivo, solo quelle del mio capo.
mouviciel,

1
cosa c'è di sbagliato nel lasciare il loro nome come autore e aggiungere una riga sotto che dice "riscritto / refactored name date"
Ryathal

Risposte:


15

Dipende davvero ...

Se pensi che ci sia una leggera possibilità che qualcun altro possa essere interessato in seguito a chiedere all'autore originale, lascia il suo nome nel codice. Se ritieni che qualcuno potrebbe essere interessato a chiedertelo di persona, lasciaci il tuo nome. E se pensi, entrambi potrebbero essere possibili, lascia entrare entrambi i nomi (o un commento come "basato sul lavoro di ...).

Naturalmente, quando l'uso del controllo della fonte è obbligatorio sul posto di lavoro e questo è l'unico modo per ottenere l'accesso alle fonti, salva il trambusto e togli tutti i commenti degli autori dalla fonte. Nel mio posto di lavoro, ad esempio, abbiamo molti file sorgente nel controllo del codice sorgente in cui non ci preoccupiamo di scrivere alcun nome nelle fonti. Se voglio sapere chi è il responsabile del file, o era in passato o per un cambiamento specifico, TortoiseSVN mi produrrà facilmente un registro per quello.

D'altra parte, abbiamo un sacco di macro VBA, scritte da alcuni ragazzi, trasmesse ad altri ragazzi (alcuni di loro hanno lasciato l'azienda nel corso degli anni) e sono stati modificati molto, il tutto senza usare il controllo del codice sorgente. Fortunatamente, i commenti di questi file contengono spesso nomi di autori e una sorta di registro cronologico.


13

Mi sono appena imbattuto in un altro post in cui OP chiedeva se il nome dell'autore dovesse anche essere nell'intestazione del file e sembra che almeno 2/3 delle persone che hanno risposto abbiano detto che il nome non dovrebbe nemmeno essere elencato e che dovresti usare il controllo della versione per tieni semplicemente traccia di chi ha modificato il file. Non so cosa sia successo a quel post, ma ora non riesco a trovarlo. <- (quindi "OP" anonimo)

Personalmente, trovo che l'autore elencato nell'intestazione del file sia utile ma per un motivo leggermente diverso (e questo potrebbe non essere correlato ad altri nei loro ambienti). Anche se proviamo a esercitare la proprietà della comunità e spesso lavoriamo su varie parti del progetto, tendiamo ad avere pochi membri del team che conoscono determinate aree del codice molto più intimamente di altre. Quindi, quando qualcuno (soprattutto numerosi appaltatori che vanno e vengono) aprono un file che non hanno mai visto prima, l'autore diventa la persona di riferimento. Potrebbe non essere l'unico contributore, o anche il collaboratore di maggioranza, ma avendo il suo nome in cima, riconosce di avere una certa responsabilità nel distribuire conoscenze / informazioni sul codice al resto del team. Possiamo elencare più di una persona nell'intestazione se più persone hanno effettivamente contribuito e si sentono responsabili.

Lo trovo frustrante quando ho una domanda su un file e devo ricorrere al controllo della versione per identificare la persona principale o più esperta. Quindi finiscono per passare da un ragazzo all'altro perché negano tutti davvero di sapere cosa fa il codice ... hanno dovuto solo entrare e correggere un bug o due.

Questa pratica funziona nel nostro team perché non abbiamo degli sconti. A meno che una persona non esca o si sposti in un team diverso, quel codice / progetto rimarrà con la persona e con il nostro team. Ovviamente se le persone che mantengono il codice non sono le stesse di quelle che lo scrivono, allora a nessuno importerebbe chi fosse elencato nell'intestazione.

Quindi alla luce del mio punto di vista sulle intestazioni dei file, direi che se hai cambiato l'80% del file e ti senti come se fossi ora il ragazzo giusto per qualsiasi domanda (e probabilmente dovresti sentirti così), sì, vai avanti e aggiorna l'intestazione del file per avere il tuo nome su di esso. Se ti senti male nel rimuovere la persona precedente, potresti lasciare anche il suo nome lì, almeno per il momento. Puoi sempre chiedere all'autore originale e sono sicuro che non gli dispiacerà un po 'che tu abbia cambiato il nome, dato che presumo che non ti senta che tu abbia cambiato l'80% del file stesso.

AGGIORNAMENTO: trovato quel post . Non ho idea di come sono riuscito a ritirare qualcosa da agosto. Ho appena finito di leggere The Pragmatic Programmer e nell'ultimo capitolo gli autori parlano della firma del lavoro e della responsabilità (l'altro post lo ha menzionato, ecco perché l'ho cercato). Il libro ha perfettamente senso e ora che ci penso, forse dovremmo introdurre una politica di gruppo che chiunque sia elencato come autore, dovrebbe essere incluso in tutte le revisioni del codice del file in questione. Non importa chi ha modificato il file per ultimo o per lo più in SVN, l'autore è il proprietario ed è il custode.


1
Vedo i tuoi punti ma chi è "OP"?
Tarun,

Potrebbe esserci una pagina di progetto o un wiki interno in cui le informazioni di contatto possono essere visualizzate da chiunque. La difficoltà di mettere tali informazioni (documentazione e persone di contatto) nel controllo delle fonti sorge ... durante la ramificazione e l'unione.
rwong

@Tarun: OP = "poster originale" (cioè la persona che pone la domanda). È un'espressione utilizzata nei forum di discussione online.
sleske,

D'accordo con @Tarun, un link al post contribuirebbe a mettere la tua risposta in prospettiva. Immagino sia questo ?
yannis,

1
@rwong: Perché c'è un problema durante la diramazione e l'unione? Normalmente la persona che unisce un cambiamento dovrebbe capirlo (altrimenti, perché lo stanno unendo?). Quindi la persona nel registro è quella da chiedere.
sleske,

5

Non trovo il nome dell'autore terribilmente utile. Come mostra questa domanda, spesso non esiste un singolo autore, quindi non è possibile nominare "l'autore".

Ovviamente potresti includere un elenco di tutte le persone che hanno apportato contributi importanti, ma puoi già ottenerlo dal registro di controllo delle revisioni, quindi qual è il punto?

Nel mio progetto, non ci sono informazioni sull'autore nella maggior parte dei file. Se hai una domanda, dai un'occhiata ai registri e di solito è ovvio che una o due persone hanno svolto la maggior parte del lavoro, quindi le chiedi.

modificare

La risposta presuppone che un progetto utilizzi il controllo versione. Se non si utilizza (costantemente) VC, inserire un autore (elenco) e forse un po 'di cronologia delle modifiche in un file potrebbe essere una soluzione alternativa. Tuttavia, dovresti probabilmente iniziare a utilizzare VC il più rapidamente possibile, nel qual caso vedi sopra :-).


so what's the point?Progetti che non rientrano in un VCC, progetti che a un certo punto sono migrati in un VCC diverso (purtroppo non tutti gli schemi di migrazione consentono la migrazione della cronologia) e progetti che utilizzano più di un VCC allo stesso tempo - alcuni progetti FLOSS adottano che approccio per rendere più facile il contributo delle persone, senza limitarle a un solo vcs (le persone svn trovano git difficile, le persone git trovano svn inutilizzabili e noi hg ridiamo di entrambi)
yannis,

1
@YannisRizos: OK, è vero. Ho presupposto implicitamente che qualsiasi progetto software avrebbe usato il controllo della versione. Modificato la mia risposta.
sleske,

E naturalmente i miei altri punti dovrebbero essere facilmente risolti con alcuni vcs-fu minori, indipendentemente dai vcs coinvolti. Ma in pratica lo sono raramente, purtroppo.
yannis,

2

Se il file è stato modificato in modo significativo, dovrebbe essere accettabile aggiungere il tuo nome nel file come qualcuno che ne sa qualcosa.


1

Il creatore del file sorgente dovrebbe / deve sempre (IMHO) essere menzionato nel file sorgente. Questo, con un buon commento all'intestazione, dovrebbe mostrare perché l'autore ha sviluppato la fonte e quale fosse il suo modo di pensare per scrivere il codice. Per quanto riguarda il manutentore del codice, l'aggiunta del nome del manutentore è fondamentale per il monitoraggio del controllo del codice sorgente.

La denominazione dell'autore, di nuovo IMHO, dovrebbe includere la versione di origine del codice, al di fuori del sistema di controllo della versione, la prima data in cui si è verificata la modifica, nonché il numero della richiesta di modifica. Il motivo è che, se sorge la decisione di modificare VCS, c'è la cronologia della versione del codice, chi era l'autore e il numero di richiesta di modifica a cui gli sviluppatori possono fare riferimento (se devono sapere perché il manutentore ha fatto quello che / lei ha fatto). Pertanto, nella nostra organizzazione, il nostro formato è il seguente:

/**
 * $comment
 * <p />
 * $cr_number, $date, $author, $description 
 **/

3
"se sorge la decisione di cambiare VCS, c'è la storia della versione del codice" Spero che nessuna organizzazione sana possa prendere in considerazione la migrazione di VCS senza migrare la cronologia (almeno la storia recente). Questo, dopo tutto, è il punto di usare VCS.
sleske,

1
Completamente in disaccordo. Questo tipo di informazioni dovrebbe essere monitorato con il controllo della versione. Altrimenti non c'è davvero modo di sapere chi ha apportato modifiche a quali righe (supponendo che più di una persona abbia lavorato su un file). Inserirlo nel file è semplicemente un duplicato di informazioni a bassa fedeltà disponibile altrove.
Bryan Oakley,

1
@Bryan Oakley, non sto affatto rimuovendo il controllo di versione, sto affermando che riconoscere qualcuno nel codice è un modo per sapere chi ha lavorato sul sorgente, senza bisogno di fare la ricerca necessaria tramite il controllo di versione. Inoltre, ci sono alcuni codici disponibili al di fuori dei sistemi di controllo della versione, il nome dell'autore dovrebbe essere escluso?
Buhake Sindi,

1

Mi piace vedere il nome dell'autore originale, anche solo per trovare qualcuno per iniziare la mia ricerca di risposte sul codice. (L'autore di solito non ha ricordi, ma è almeno uno scatto!)

Ti consiglio di aggiungere semplicemente il tuo nome sotto quello dell'autore originale.

Non è necessario sostituire il nome dell'altra persona, in quanto potrebbero conoscere alcuni aspetti dell'attività aziendale originale che non è necessario e altri che seguono dopo potrebbe essere necessario parlare anche con quella persona.


+1 per il terzo paragrafo, poiché l'autore originale potrebbe conoscere un'altra persona che ha fatto qualcosa nel codice, ma non ci ha messo il suo nome.
Coyote21,

1

La mia politica sui commenti di @author è:

  1. Se è un file nuovo di zecca, mi metto come @author.
  2. Se è un file esistente, lascio @author da solo, indipendentemente da ciò che faccio nel file.

Se hai domande su qualcosa, non importa chi sia l'autore @ del file - importa chi è l'autore @ di quale porzione del file stai modificando. Questo è ciò che [git/svn/whatever] blameserve.

IMO, @author deve andare via.


Da un lato, ti elenchi come autore in un nuovo file. D'altra parte, vuoi che l'autore vada via?
Anthony Pegram,

1
Gli standard di codifica aziendale richiedono la presenza del tag @author. Altrimenti, non lo userei affatto (perché voglio che vada via :)).
Michael Moussa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.