Devo sacrificare la succintenza del codice per garantire l'ambito della variabile più stretto? [duplicare]

1

In molte lingue (ad esempio sia Perl che Java - che sono le due lingue con cui lavoro di più) è possibile restringere l'ambito delle variabili locali dichiarandole all'interno di un blocco.

Sebbene aggiunga lunghezza del codice extra (le parentesi graffe di apertura e chiusura) e possibilmente riduca la leggibilità, dovrei creare blocchi puramente per restringere l'ambito delle variabili alle affermazioni che usano le variabili e per mantenere il principio di ambito più ristretto o questo sacrifica la concisione e la leggibilità solo per sostenere inutilmente un principio di "buona pratica" concordato?

In genere dichiaro variabili locali a funzioni / metodi all'inizio della funzione per facilitare la leggibilità, ma non potrei farlo, e creo solo blocchi in tutta la funzione e dichiaro le variabili in tutto il codice - all'interno di quei blocchi - per restringere il loro scopo.

    
posta David Scholefield 21.08.2014 - 14:26
fonte

2 risposte

3

In parole povere:

  • Non devi sacrificare la succosità per limitare l'ambito
  • Mantieni funzioni / metodi brevi
  • Con metodi / funzioni brevi non è necessario utilizzare i blocchi per restringere l'ambito delle variabili
  • L'uso dei blocchi per il restringimento dell'ambito delle variabili è un indicatore del fatto che le tue funzioni / metodi sono troppo lunghi.
  • Funzioni / metodi così lunghi da richiedere blocchi per il restringimento dell'ambito delle variabili, sono l'opposto della succinta.
risposta data 21.08.2014 - 15:06
fonte
2

Per rispondere a una domanda con una domanda ... stai parlando di variabili mutabili o immutabili?

Il valore della riduzione dell'ambito per i mutabili è molto più alto - riduce ciò che il lettore / manutentore deve esaminare per determinare quali modifiche sono sicure - o da dove potrebbe provenire un errore.

L'unica volta che mi preoccupo molto dell'ambito intra-funzione per immutables è quando vengono istanziati in base ad altri dati che potrebbero cambiare stato nell'esecuzione della funzione.

    
risposta data 21.08.2014 - 15:42
fonte

Leggi altre domande sui tag