È corretto riformattare un altro codice per sviluppatori durante la modifica / aggiunta a un modulo?


13

Durante lo sviluppo in un'atmosfera di gruppo e l'aggiunta o la modifica di funzionalità in alcune basi di codice. È considerato offensivo o scortese riformattare il precedente codice degli sviluppatori per renderlo conforme agli attuali standard di codifica? Comprendo che gli standard sono cambiati e probabilmente continueranno a cambiare, ma qualcuno di voi si offenderebbe se qualcuno arrivasse e modificasse la formattazione del codice?

Per essere chiari, non sto parlando di cambiare alcuna logica, ma solo fare casino con schede, spazi e così via.

EDIT: Non lo faccio solo per motivi di standard di codifica, mi aiuta a leggere il loro codice e aggiornarlo in modo da poter comprendere appieno la logica che è stata implementata prima di iniziare a modificare le applicazioni critiche.


6
Abilita "formattazione al salvataggio" automatica per tutti. Tutti usano le stesse impostazioni concordate. Dopo un po 'tutto il codice viene normalizzato.

1
Può esserci un punto in cui questo va molto lontano. Avevo un collega che riformattava ogni cosa aggiungendo interruzioni di linea non necessarie o addirittura rilevanti per quanto mi riguardava. Personalmente, a meno che non sia illeggibile o che il codice non sia diventato la mia responsabilità principale, lascio da solo la formattazione, a meno che non apporti altre modifiche.
SoylentGray

1
Se stai scrivendo un codice in c #, segui StyleCop. Se in altre lingue, prova a scegliere uno strumento valido e imparziale.
Giobbe

5
È questo "Sto cambiando la formattazione ... perché io penso che dovrebbe avere un aspetto diverso" .. o è questo "Sto cambiando la formattazione ... troppo corrisponde agli standard di " ... domande estremamente diversi
WernerCD

1
@Thorbjorn Non prenderei in considerazione un ramo che corregge la formattazione in ogni file, 1 file per commit, uccidendo la cronologia. Tuttavia, risolverlo durante lo stesso commit è semplicemente negativo. (Immagino che potrebbero usare qualcosa di simile git addper impegnare selettivamente le parti, ma suppongo che la maggior parte delle persone usi l'equivalente di svn commito git commit -a)
alternativa

Risposte:


19

Penso che sia OK fintanto che gli standard saranno concordati. Una nota di cautela tuttavia; tenere presente se esiste la possibilità che il file venga modificato da altri contemporaneamente. Se rendi la loro unione più difficile solo perché stai modificando la formattazione, non sarai molto popolare.


10
La prima frase qui è importante. Assicurati di seguire gli standard concordati e di non apportare modifiche solo perché ti piacciono.
Thomas Owens

5

Sì, il codice dovrebbe appartenere al progetto. Portare il codice su standard aiuterà a ridurre il deficit tecnico del progetto. Se lo stai modificando, sei attualmente responsabile. Per il codice precedente, lo sviluppatore originale potrebbe non essere più sul progetto o avere nuovi compiti.

Quando si esegue questo tipo di modifica, è consigliabile eseguire i test di verifica dopo la riformattazione. Se passano, controlla il codice prima di apportare le modifiche alle funzionalità.

EDIT: nel contesto di questa domanda, è appropriato riformattare secondo lo standard. In assenza di standard, consiglierei di sostenere gli standard e di non riformattarli fino a quando non ci saranno standard per il formato. La riformattazione secondo i gusti / gli standard personali non dovrebbe essere fatta con il codice appartenente al progetto.


2
+1 per "controlla il codice prima di apportare le modifiche alle funzionalità"
bdoughan,

1
Ancora +1 per "controlla le modifiche alla formattazione prima di apportare le modifiche alle funzionalità" ed "è bene eseguire i test di verifica dopo la riformattazione". Idealmente, dovremmo eseguire test di verifica prima di ogni check-in.
leed25d,

In realtà, non importa se riformattare prima o dopo le modifiche. Ciò che conta è che le patch estetiche debbano essere separate dalle patch funzionali -> se una patch estetica ha cambiato la funzionalità, non era pensata e può essere considerata un bug; semplifica la revisione delle patch funzionali (perché più piccole).
Matthieu M.

@Matthiew M: Vero, ma nella maggior parte dei casi verranno eseguiti per migliorare la manutenibilità prima della manutenzione. Pochi sviluppatori hanno il tempo di farlo dopo il fatto. Inoltre, se è necessario aggiornare il codice per superare i test di check-in automatizzati, è necessario prima riformattarlo per mantenere la separazione di patch estetiche e funzionali.
BillThor,

3

Credo che sia sempre una buona pratica riformattare il codice quando si modifica / si aggiunge a un determinato file. Ciò include l'aggiornamento dello stile del codice per riflettere le convenzioni di denominazione appropriate per variabili / metodi e stili di codifica.


Il PO ha chiesto di riformattare, non di refactoring.
quant_dev,

Lo so; Ho detto che ritengo che includere anche la riformattazione :)
Wayne Molina,

2

Lo faccio sempre. Il vecchio codice dovrebbe essere tenuto agli stessi standard del nuovo codice e se non lo aggiusti mentre ci stai lavorando, nessuno lo farà. Penso che questo valga per la regola del boy scout.


2

Penso che questa sia una buona pratica e una parte necessaria della manutenzione del codice.

Consiglierei di controllare le modifiche di formattazione in un commit al sistema di controllo versione e le modifiche funzionali in un commit separato per aiutare sia te stesso che gli altri a capire cosa è successo.


1
+1 per commit separati. Cercare di capire quali modifiche al codice sono state apportate in un commit quando il codice è stato riformattato contemporaneamente è una PITA. I tuoi strumenti diff sono inutili se ogni riga nel file è cambiata.
Dave Kirby,

2

Non avrei alcun problema con esso e probabilmente lo apprezzerei ... purché i cambiamenti non siano "religiosi". Per favore, non seguire tutte le mie lezioni e spostare le parentesi graffe sulla prima riga del metodo. Se la formattazione è una cosa legittima "tratti diversi per persone diverse", allora è un po 'fastidioso quando qualcuno entra e impone un formato sul codice che modifichi più frequentemente. Tuttavia, se diventi l'editor principale di quel particolare modulo, apporta le modifiche di formattazione che ritieni più adatte.


1

Sì. Per favore, "correggi" il codice come ritieni opportuno. Proprio come dicono i programmatori pragmatici nel loro libro The Pragmatic Programmer , nessuna finestra rotta. Se il codice non è all'altezza, lo considero una finestra rotta.


1

Esistono vari repository che eseguiranno automaticamente la riformattazione al momento del check-in così come piccole cose come cambiare l'associazione CR / LF su get a seconda della piattaforma che ottiene la fonte.

C'è un enorme svantaggio nel fare i tuoi riformattati in quanto il tuo check in delta sarà offuscato da tonnellate di riformattazione e se c'è un problema di regressione diventa più difficile trovare i blocchi di codice offensivi.

Potresti suggerire al tuo leader che, poiché la base di codice è vecchia, dovrebbe essere introdotta dal freddo e riformattata secondo gli standard attuali tutto in una volta, portando a un nuovo brillante futuro per il codice ovunque.


1

Dato che stai parlando di un problema puramente di "formattazione" (nel senso che non stiamo risolvendo bug ma rendendolo abbastanza simile al tuo standard), penso che dipenda se la persona originale sta ancora mantenendo il codice o meno.

Se l'originatore sta ancora lavorando al progetto, è scortese. Ciò che potrebbe "sembrare" giusto per te non è ciò che "sembrerà" giusto per loro e modificare il codice per motivi di formattazione non è educato. Può anche perdere molto tempo.

Una volta stavo lavorando a un progetto con uno sviluppatore MOLTO possessivo. Nel corso degli anni, ho sviluppato un modo molto metodico di formattare il mio codice che ritengo sia facile da leggere, meno soggetto a errori impliciti e auto-documentazione. Questo ragazzo, d'altra parte, preferiva usare tutte le funzionalità implicite con lunghe righe che si estendevano su 300 caratteri, quindi dovevi avere un monitor da 30 "per leggerlo perché credeva che il conteggio delle linee fosse più importante della leggibilità. Trascorse mezza giornata soffiando attraverso il mio codice cambiandolo al suo "standard preferito" ... mentre stavo ancora sviluppando in parallelo! Sono venuto la mattina dopo per trovare due giorni di lavoro formattati per il suo pasticcio. Era scortese e una perdita di tempo.

Ora se lo sviluppatore non c'è più e hai uno "stile migliore", provalo.


0

Formatta sempre automaticamente il codice se il tuo IDE può farlo.

  • Impedisce alle modifiche manuali di formattazione di ingombrare la cronologia delle versioni a lungo termine
  • Il profilo del formatter deve essere concordato tra tutti gli sviluppatori (scegli il valore predefinito? -)
  • Rendi la formattazione del codice e l'organizzazione delle importazioni un'abitudine durante il salvataggio di un file

Ad esempio in eclipse, puoi prima eseguire il formatter e organizzare le importazioni per l'intera base di codice. Quindi ricordati di ctrl + alt + f prima di salvare.

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.