Esercizio - Rimuovere blocchi di codice dalle istruzioni if
Gli sviluppatori di software lo amano quando possono scrivere codice che consente di risparmiare sequenze di tasti e spazio visivo senza sacrificare la leggibilità. Applicare solo la frase "less is more" nel processo di sviluppo quando rende il codice più leggibile e comprensibile.
Se un blocco di codice richiede una sola riga di codice, è probabile che non sia necessario definire un blocco di codice formale usando parentesi graffe. Anche se tecnicamente non è necessario separare il codice in più righe, la combinazione di istruzioni su una singola riga può rendere difficile la lettura del codice.
La rimozione delle parentesi graffe, come descritto in precedenza, è una modifica stilistica che non dovrebbe influire sulla funzionalità del codice. Tuttavia, è necessario adottare misure per assicurarsi che le modifiche non influiscono negativamente sul modo in cui il codice è leggibile. È possibile valutare l'impatto della rimozione delle parentesi graffe e degli spazi vuoti, quindi ripristinare il codice originale se si rileva che le modifiche hanno reso il codice meno leggibile.
Creare un esempio di istruzione if che usa un blocco di codice
Assicurarsi che in Visual Studio Code sia aperto un file Program.cs vuoto.
Se necessario, aprire Visual Studio Code, quindi completare la procedura seguente per preparare un file Program.cs nell'editor:
Nel menu File selezionare Apri cartella.
Usare la finestra di dialogo Apri cartella per navigare fino alla cartella CsharpProjects e aprirla.
Nel pannello EXPLORER di Visual Studio Code selezionare Program.cs.
Nel menu Selezione di Visual Studio Code, selezionare Seleziona Tutto e quindi premere il tasto Cancella.
Digitare il codice seguente nell'editor di Visual Studio Code:
bool flag = true; if (flag) { Console.WriteLine(flag); }Salvare il file di codice e quindi usare Visual Studio Code per eseguire il codice.
Immettere
dotnet rundal prompt dei comandi del terminale per eseguire il codice.Verificare se viene visualizzato il seguente output:
TrueIl codice rappresenta un buon punto di partenza, ma è disponibile un blocco di codice che include una singola riga di codice. In questo caso, è necessario definire un blocco di codice?
Rimuovere le parentesi graffe
Il codice precedente esegue un blocco di codice quando flag è true. Poiché questo blocco di codice contiene una singola riga di codice, è possibile rimuovere le parentesi graffe.
Aggiornare il codice nell'editor di Visual Studio Code come indicato di seguito:
bool flag = true; if (flag) Console.WriteLine(flag);Annotazioni
La rimozione delle parentesi graffe non modifica il fatto che
Console.WriteLine(flag);rappresenta il blocco di codice per l'istruzioneif.Salvare il file di codice e quindi usare Visual Studio Code per eseguire il codice.
Si noti che l'output è uguale a quello precedente.
Verrà comunque visualizzato l'output seguente:
TrueTuttavia, sono presenti due righe di codice in meno. Soprattutto, anche se la riga di codice sotto il
ifè indentata, il tuo codice rimane facilmente leggibile.
Esaminare la leggibilità delle istruzioni if in formato a riga singola
In questo passaggio si esaminerà un caso in cui la leggibilità del codice potrebbe avere un impatto negativo.
Poiché sia l'istruzione if che la chiamata al metodo a Console.WriteLine() sono brevi, si potrebbe essere tentati di combinarli su una singola riga. Dopo tutto, la sintassi C# per l'istruzione if consente di combinare le istruzioni in questo modo.
Aggiornare il codice nell'editor di Visual Studio Code come indicato di seguito:
bool flag = true; if (flag) Console.WriteLine(flag);Salvare il file di codice e quindi usare Visual Studio Code per eseguire il codice.
Si noti che l'output è ancora lo stesso.
Prenditi un momento per riflettere sulla leggibilità del codice.
Si supponga che i due esempi di codice precedenti siano annidati all'interno di una sezione più grande del codice. La combinazione di istruzioni di codice (come nel passaggio 4) potrebbe rendere più difficile la lettura.
Quando si implementa un'istruzione
ifche include un blocco di codice a istruzione singola, Microsoft consiglia di prendere in considerazione queste convenzioni:- Non usare mai un modulo a riga singola (ad esempio: se (flag) Console.WriteLine(flag);
- L'uso delle parentesi graffe viene sempre accettato e richiesto se un blocco di un'istruzione composta if/else if/.../else usa parentesi graffe o se un singolo corpo dell'istruzione si estende su più righe.
- Le parentesi graffe possono essere omesse solo se il corpo di ogni blocco associato a un'istruzione composta if/else if/.../else viene posizionato su una singola riga.
Per esaminare l'impatto sulla leggibilità per costrutti if-elseif-else più grandi, aggiornare il codice nel modo seguente:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Salvare il file di codice e quindi usare Visual Studio Code per eseguire il codice.
Quando si esegue il codice, dovrebbe produrre l'output seguente:
Found SteveIl codice viene eseguito, ma queste righe di codice sono dense e difficili da leggere. È possibile riformattare il codice in modo da includere un'interruzione di riga dopo le istruzioni
if,else ifeelse.Confrontare il codice appena eseguito con il codice seguente:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Si noti quanto sia più semplice leggere il secondo esempio di codice.
Riepilogo
Ecco alcuni aspetti importanti da ricordare sui if blocchi di codice delle istruzioni e sulla leggibilità:
- Quando ti rendi conto di avere una sola riga di codice elencata all'interno dei blocchi di codice di un'istruzione
if-elseif-else, puoi rimuovere le parentesi graffe del blocco di codice e gli spazi bianchi. Microsoft consiglia di usare le parentesi graffe in modo coerente per tutti i blocchi di codice di un'istruzioneif-elseif-else(presenti o rimosse in toto). - Rimuovere solo le parentesi graffe di un blocco di codice se ciò renderà l codice più leggibile. È sempre accettabile includere parentesi graffe.
- Rimuovere il feed di righe solo se rende il codice più leggibile. Microsoft suggerisce che il codice sarà più leggibile quando ogni istruzione viene inserita nella propria riga di codice.