2009-12-02 11 views
8

Vedo che alcuni programmatori aggiungono un codice che, dopo tutto, non fa nulla di utile. Per esempio (C#):È accettabile avere un codice inutile?

[Serializable] 
class Foo { 
    // ... 
    string SerializeMe() { 
     return new XmlSerializer(typeof(this)).Serialize(this).ToString(); // serialize to xml (syntax wrong, not important here) 
    } 
} 

La classe è contrassegnato come Serializable, ma l'unico modo è serializzato è mediante XmlSerialization, che non richiede l'attributo classe affatto.

Personalmente odio questo tipo di codice inutile, ma lo vedo molto spesso e sono curioso di sapere cosa ne pensano gli altri. Dopotutto, non è un difetto così grave? È una pratica comune nel settore? O è semplicemente brutto e dovrebbe essere rimosso, non importa quale?

risposta

4

È necessario uno sforzo minimo per leggere il codice aggiuntivo (inutile, come aggiunto)?

Se sì (e penso che sia così), allora non dovrebbe essere nel codice. Codice come questo è contaminato da frammenti extra che non sono utili, sono lì "nel caso in cui".
Il "dopo il refactoring" di queste cose può essere doloroso, dopo 6 o 12 mesi, chi ricorderà se è stato effettivamente usato?

0

Pensa che il significato di inutile è che non può e non verrà utilizzato. Penso anche che una porta aperta sia molto aperta.

+0

sidenote: codice commentando, o attribuendo senza funzione, non è sempre inutile;) – Ropstah

+1

Posso e fare cose inutili tutto il tempo, come discutere con la moglie ... –

+0

Questo non è inutile in quanto ti rende (o lei) produce ormoni a cui tu, lei o entrambi siete dipendenti. – Ropstah

1

In un progetto commerciale, direi di no, soprattutto se qualcuno può smontarlo per la lettura e poi ha un momento WTF.

In un progetto di casa - certo perché no, mantengo spesso alcuni frammenti per un uso successivo.

+1

-1 Ti consiglio di mantenere i frammenti in un plug-in snippet o nel controllo del codice sorgente. –

+1

Altro che un progetto personale e come tale può fare ciò che vuole con esso. –

+0

In entrambi i casi dovresti usare il controllo del codice sorgente e non dovrebbe certamente essere registrato.;) –

1

Beh, non posso commentare questo particolare pezzo di codice senza conoscere il tuo background ma personalmente seguo rigorosamente una regola per non avere nulla in codice a meno che non ne abbia davvero bisogno. O almeno sapere che potrebbe essere utile un giorno per qualcosa che ho già in mente.

10

mia regola empirica,

Se proprio non utilizzato sbarazzarsi di esso.

Tutti i commenti in eccesso, interessanti sono solo rumore e aiutano il tuo codice a diventare illeggibile. Se lasciato lì, incoraggiano più codice in eccesso nella tua base di codice. Quindi rimuovilo.

18

Controllo origine buona significa che il codice o il codice inutile che non è più necessario devono essere rimossi. Può sempre essere recuperato dal controllo sorgente in un secondo momento.

+0

Sono d'accordo, questo è anche il mio punto di vista. Aiuta anche quando confronti le versioni precedenti dello stesso file perché vedi cosa è cambiato! Puoi dire "oh abbiamo lasciato il supporto per la serializzazione dalla versione xxx" per esempio. Quindi aggiunge documentazione implicita. –

5

Provo a seguire il principio YAGNI, quindi anche questo mi infastidisce.

1

Questo è un codice errato.

Il codice errato è una pratica comune.

Ciò detto a volte non vale la pena di cambiare materiale che non è "rotto".

+0

Sono completamente in disaccordo. sono atteggiamenti del genere che tengono gli insetti bloccati nel codice sorgente per decenni per paura di toccare il "codice sacro". Cosa succede se ho preso il tuo romanzo preferito e ho messo dei graffiti dappertutto? Ti piacerebbe leggere più questo romanzo? –

1

Sembrerebbe che la perfezione non sia raggiunta quando non si può aggiungere altro, ma quando non può più essere rimosso.— Antoine de Saint-Exupéry

+0

Modifica di una citazione di Antoine de Saint-Exupéry, una designer di aerei che ha scritto un meraviglioso libro per bambini. Qualcosa come "Le perfezioni arrivano non quando ....". –

+1

Congratulazioni, il tuo tempo di programmazione è appena triplicato e chi ti commissiona ti farà infuriare. – Graviton

+0

Grazie a Civilization IV (e Leonard Nimoy), so che la citazione originale è (tradotta dal francese): Sembrerebbe che la perfezione sia raggiunta non quando non si può aggiungere altro, ma quando non può più essere rimosso. - Antoine de Saint-Exupery (1900 - 1944) – Dolphin

4

Davvero non piace.

Perché trascorro quindi del tempo prezioso cercando di capire perché è lì. Supponendo che se è lì, è lì per un motivo, e se non vedo il motivo, allora c'è una possibilità che mi manca qualcosa di importante che dovrei capire prima di iniziare a scherzare con il codice. Mi irrita quando mi rendo conto che ho appena perso un'ora cercando di capire perché, o cosa, qualche frammento di codice sta facendo, che è stato lasciato lì da qualche sviluppatore troppo pigro per tornare indietro e rimuoverlo.

0

Se c'è un piano attiva per utilizzare questa funzione aggiuntiva, quindi tenerlo in.

Se si sa che non potrà mai essere utilizzato, o se quel piano ha smesso di essere rilevanti 6 mesi fa, quindi estrarla. Prima commenterei, quindi rimuoverlo completamente più tardi.

Sono nel bel mezzo del salvataggio di un sacco di variabili che erano pubbliche ma che in realtà devono essere solo protette o private, semplicemente perché non hanno senso da una prospettiva API per essere esposte - che e niente usa loro.

2

Il codice one-liner inutile può e deve essere rimosso.

Il codice inutile che ha richiesto tempo per scrivere può e deve essere rimosso ... ma i responsabili tendono a sentirsi male. Forse la soluzione migliore è avere un progetto ProbablyUselessButWhoKnows in cui tutti possono verificare in un codice inutile che potrebbe essere riutilizzato in due o tre anni. Se non altro, in questo modo le persone non devono sentirsi nervose per averlo cancellato.

(Sì, in teoria è possibile ottenere fuori di controllo del codice sorgente, ma vecchio codice eliminato nel controllo del codice sorgente non è esattamente altamente rilevabile.)

Problemi correlati