Va bene usare la stessa variabile per memorizzare sequenze simili in sequenza? [duplicare]

4

Dire che ho un nome di variabile len in una funzione e più stringhe. Posso usarlo per memorizzare la lunghezza di queste stringhe una dopo l'altra o dovrei creare variabili separate? Fondamentalmente questo:

size_t len;
len = string1.size()
....//some code
len = string2.size()
...//more code

vs

size_t str1len, str2len;
str1len = string1.size()
....//some code
str2len = string2.size()
...//more code

Tutti sono variabili locali all'interno di una funzione BTW.

    
posta Akilan 04.10.2013 - 11:15
fonte

3 risposte

4

Se hai davvero intenzione di introdurre queste variabili come scorciatoie per le espressioni, e non puoi dividere facilmente quel codice in due funzioni, sceglierei la seconda alternativa. E lo scriverei in questo modo:

 size_t str1size = string1.size()
 ....//some code
 size_t str2size = string2.size()
 ...//more code
  • non utilizzare il nome "len" quando il nome originale è "size" (sarà più coerente nella denominazione)
  • dichiara e assegna in una dichiarazione. Ciò ti aiuterà a prevenire un errore di copia / incolla in cui copi la prima riga in basso e dimentichi di cambiare il nome della seconda variabile.
risposta data 04.10.2013 - 14:36
fonte
6

Vorrei utilizzare lo stesso nome di variabile ma ambiti separati per garantire che non utilizzi mai accidentalmente un valore di lunghezza della stringa errata

{
  size_t len;
  len = string1.size()
  ....//some code
}
{    
  size_t len;
  len = string2.size()
  ...//more code
}
    
risposta data 04.10.2013 - 11:20
fonte
3

Di solito è piuttosto confuso. Tuttavia, anche la seconda opzione che elenchi non sembra giusta. Invece dovresti:

  1. Per cose semplici come str.size() , usa questa espressione dove ti serve e non salvarla affatto nella variabile.
  2. Suddividi il codice per le funzioni di supporto, quindi elabori solo una stringa in un solo helper.
  3. Limita almeno l'ambito delle variabili con un blocco (vedi risposta di MrSmith42)
risposta data 04.10.2013 - 11:21
fonte

Leggi altre domande sui tag