È appropriato rimuovere il codice ridondante assegnando esplicitamente i valori predefiniti?

1

A volte mentre sto modificando qualcosa vedo del codice inutile aggiunto da altri sviluppatori, probabilmente a causa dell'abitudine.

La modifica di questo codice non farà alcuna differenza, quindi è appropriato?

Nel mio caso specifico sto parlando di campi privati Java come questo:

private int aSimpleInt = 0;
private boolean myBool = false;
private MyObject obj = null;

che dichiara che i valori predefiniti sono ridondanti e inutili.
Devo rimuoverli o semplicemente saltare?

    
posta Enrichman 23.05.2014 - 09:59
fonte

3 risposte

8

Dichiarare valori che sarebbero già stati assegnati dal compilatore è inutile per il comportamento del programma . Tuttavia, non è quello che dovresti ottimizzare come sviluppatore professionista. Invece, dovresti mantenere il tuo codice base nello stato in cui supporta lo sviluppo in corso .

Se il codice riguardasse solo la sua semantica qui e ora, potreste pensare davvero tanto una volta, eliminare il codice assembler necessario e non pensarci più. Ma nel mondo reale, le modifiche ai requisiti, le correzioni, la manutenzione, i cambiamenti di formato ecc. Ecc. Continuano a susseguirsi senza fine. È fondamentale che la tua base di codice non solo faccia ciò che è previsto, ma resti anche in uno stato che ti consente di svolgere il lavoro che sarà richiesto.

Spiegare cose che sarebbero già di default può essere utile per questo, quindi non è automaticamente una cattiva idea. Dopo tutto, non si paga il compilatore per il numero di caratteri che consuma. Dovresti dichiarare le cose quando lo fai rende il codice più leggibile.

In Java, le variabili globali sono automaticamente inizializzate, ma quelle locali non lo sono; a seconda dei livelli di esperienza della tua squadra (la tua squadra attuale e il futuro team atteso!) può essere una buona idea precisare le cose in modo che nessuno debba mai pensare, anche solo per un secondo, quale valore avrà qualche variabile in run- tempo, o potrebbe non esserlo. Ma "Non cambia nulla nel programma compilato" non è un argomento sufficiente per chiamare il codice "inutile".

    
risposta data 23.05.2014 - 10:07
fonte
1

Lo scopo del codice non è tanto comunicare con la macchina, ma con altri sviluppatori, in modo che un programma possa essere mantenuto e lo sforzo non venga sprecato. Per me, il codice ridondante è cattivo nel senso che oscura lo scopo del programma. Il compilatore non si stanca di leggere le righe, ma un lettore umano lo fa.

Consideriamo un esempio sciocco:

int addTwo(int someNumber) {
    someNumber++;
    someNumber--;
    someNumber++;
    someNumber--;
    return someNumber + 2;
}

Potresti avere n linee di aggiungere e sottrarre da someNumber prima di eseguire l'operazione effettiva. Il successo nel tempo e nelle prestazioni della compilation è probabilmente minimo. Tuttavia, se un altro sviluppatore deve scorrere centinaia di righe (e nel peggiore dei casi, pensaci bene solo per scoprire che sono inutili), hai sprecato molti minuti e sforzi umani.

Quindi la mia risposta sarebbe: rimuovi il codice ridondante e lascia che i lettori si concentrino sullo scopo del tuo programma.

    
risposta data 23.05.2014 - 11:07
fonte
1
  1. Molto spesso queste cose hanno una funzione, infatti in Java in alcune situazioni è richiesto di fare un simile incarico.
  2. Anche se non richiesto esplicitamente, per chiarezza è spesso una buona idea eseguire tale compito, anche se solo per la leggibilità.
  3. Generalmente non dovresti cambiare codice a meno che non ci sia un motivo tecnico o funzionale, cambiamenti solo perché "altrimenti sarebbe bello" non sono una buona idea e troppo spesso portano a bug, specialmente se eseguiti da persone che non hanno familiarità con il sistema e / o lingua che non possono prevedere tutti i possibili effetti collaterali delle loro modifiche.
risposta data 23.05.2014 - 11:56
fonte

Leggi altre domande sui tag