Codice struttura con parentesi graffe

0

È un buon stile mettere parentesi graffe attorno a parti logiche del codice sequenziale per strutturarlo?

Un vantaggio sarebbe che puoi comprimere questi blocchi in un editor come vim e ottenere una migliore visione del tuo codice.

Parlo di codice, che non appartiene a una funzione separata, a causa del sovraccarico dei parametri, o di molte funzioni chiamate solo una volta o simili.

Esempio:

struct abc {
  int a = 1;
  string b = "foo";
  char c = 'c';
  //...
} 

//...
abc myabc;
//assigning variables
{
   myabc.a = 111;
   myabc.c = 'x';
   //...
}

può essere compresso a (vim):

//...
abc myabc;
//assigning variables
{...}

Conosco gli elenchi di inizializzatori e l'esempio è ovviamente composto. Altri esempi potrebbero essere un po 'di stampa, o un grosso blocco di gnu longopts all'inizio del metodo main o cercare alcuni valori in una variabile di cache std :: map.

    
posta Jounathaen 15.09.2017 - 11:53
fonte

1 risposta

6

L'unica ragione per usare un'istruzione di blocco / composto a parte i costrutti del flusso di controllo come se / else / while sia se hai bisogno di un ambito nidificato, ad es. per limitare la durata di una variabile locale. Il blocco specifica quando verranno eseguiti i distruttori, il che potrebbe essere molto importante. Per esempio. potresti utilizzare una classe che acquisisce un blocco tramite RAII e desideri rilasciarlo il prima possibile. Poi:

some_code();
{
  Lock acquire_some_resource{};
  do_stuff_while_lock_aquired();
}  // destructor releases lock
continue_without_lock();

I blocchi di codice non sono un meccanismo adatto per strutturare il codice perché suggeriranno sempre (fuorviati) che vengano utilizzati a causa della visibilità variabile o della durata.

Invece:

  • usa linee vuote tra istruzioni non correlate per aggiungere ritmo visivo al tuo codice.
  • estrai i dettagli in una funzione separata se distrae dallo scopo principale. Passare gli argomenti per riferimento se si è preoccupati del "parametro che passa l'overhead". Puoi anche assicurarti che la funzione separata abbia un collegamento interno, ad es. dichiarandolo in uno spazio dei nomi anonimo.
risposta data 15.09.2017 - 12:10
fonte

Leggi altre domande sui tag