Esercizio - Usare spazi vuoti per semplificare la lettura del codice

Completato

I progettisti di stampa e Web sanno che l'inserimento di troppe informazioni in uno spazio ridotto confonde chi visualizza. e quindi usano in modo strategico lo spazio vuoto, o spazio negativo, per suddividere le informazioni in modo che chi visualizza la loro creazione possa fruire al meglio del messaggio principale.

Gli sviluppatori possono usare una strategia simile quando scrivono il codice in un editor. Usando lo spazio vuoto per comunicare il significato, gli sviluppatori possono chiarire meglio la finalità del codice.

Che cos'è lo spazio vuoto?

Il termine "spazio vuoto" si riferisce ai singoli spazi creati da space bar, alle tabulazioni create dal tasto tab e alle nuove righe create dal tasto enter.

Il compilatore C# ignora lo spazio vuoto. L'esercizio successivo illustra come lo spazio vuoto viene ignorato e come ottenere il massimo livello di chiarezza usando lo spazio vuoto.

Aggiungere il codice per illustrare come lo spazio vuoto viene ignorato dal compilatore C#

  1. 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:

    1. Nel menu File selezionare Apri cartella.

    2. Usare la finestra di dialogo Apri cartella per passare alla cartella CsharpProjects e quindi aprila.

    3. Nella visualizzazione EXPLORER di Visual Studio Code selezionare Program.cs.

    4. Nel menu Selezione di Visual Studio Code selezionare Seleziona tutto e quindi premere CANC.

  2. Immetti il codice seguente:

    // Example 1:
    Console
    .
    WriteLine
    (
    "Hello Example 1!"
    )
    ;
    
    // Example 2:
    string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");
    
  3. Nel menu File di Visual Studio Code selezionare Salva.

  4. Nella visualizzazione EXPLORER, per aprire un terminale nel percorso della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri nel terminale integrato.

  5. Nel prompt dei comandi del terminale, digitare dotnet run e quindi premere INVIO.

    Verrà visualizzato l'output seguente:

    Hello Example 1!
    Hello Example 2!
    
  6. Prendere in considerazione il risultato che indica come usare gli spazi vuoti nel codice.

    Questi due esempi di codice illustrano due concetti fondamentali:

    • Il compilatore non prende in considerazione lo spazio vuoto. Tuttavia...
    • Lo spazio vuoto, se usato correttamente, consente di leggere e comprendere meglio il codice.

    È probabile che sia necessario scrivere il codice una sola volta, ma lo si dovrà leggere più volte, Pertanto, è consigliabile concentrarsi sulla leggibilità del codice scritto. Con il tempo si capirà meglio quando e come usare lo spazio, le tabulazioni e le nuove righe come spazio vuoto.

    Indicazioni preliminari:

    • Ogni comando completo (un'istruzione) appartiene a una riga separata.
    • Se una singola riga di codice diventa lunga, è possibile suddividerla. È tuttavia consigliabile evitare di suddividere in modo arbitrario una singola istruzione su più righe se non esiste un motivo valido per farlo.
    • Usare uno spazio a sinistra e a destra dell'operatore di assegnazione.
  7. Sostituire il codice esistente con quello seguente:

    Random dice = new Random();
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    int total = roll1 + roll2 + roll3;
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) {
        if ((roll1 == roll2) && (roll2 == roll3)) {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6; 
        } else {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    

    Si noti che questo codice non include molti spazi vuoti. Questo codice verrà usato per illustrare un approccio per l'aggiunta di spazi vuoti alle applicazioni. Uno spazio vuoto efficace dovrebbe semplificare la comprensione delle operazioni del codice.

    Nota

    Il codice usa la classeRandom per sviluppare un gioco di dadi simulato, in cui viene usato il valore totale di tre tiri di dado per valutare un punteggio "vincente". Il codice assegna punti aggiuntivi per i doppi o i tripli in sequenza. Non è necessario comprendere appieno questo codice per visualizzare il vantaggio dell'inclusione di spazi vuoti.

  8. Prendere in considerazione come usare gli spazi vuoti per migliorare la leggibilità di questo codice.

    Sono due le caratteristiche di questo codice da notare:

    • In questo esempio di codice non sono presenti spazi vuoti verticali. In altre parole, non sono presenti righe vuote che separano le righe di codice. Tutto si sussegue in un fitto listato di codice.
    • I blocchi di codice definiti dai simboli delle parentesi graffe di apertura e di chiusura { } vengono compressi ed è difficile riuscire a vederne i limiti.

    In generale, per migliorare la leggibilità, si introduce una riga vuota tra due, tre o quattro righe di codice che eseguono operazioni simili o correlate.

    La formulazione del codice con lo spazio vuoto verticale è soggettiva. Due sviluppatori potrebbero avere opinioni diverse su che cosa è piu leggibile o su quando aggiungere lo spazio vuoto. Usare il buon senso.

  9. Per aggiungere spazi vuoti verticali che migliorano la leggibilità, aggiornare il codice nel modo seguente:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) {
        if ((roll1 == roll2) && (roll2 == roll3)) {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6; 
        } else {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    

    La prima riga di spazi vuoti viene usata per separare la dichiarazione della variabiledice dalle righe di codice usate per assegnare valori alle variabili di tiro del dado. Questa separazione semplifica la visualizzazione dell’uso di dice nel codice.

    La riga successiva di spazi vuoti separa la dichiarazione delle variabili di tiro del dado dalla dichiarazione di total. Il raggruppamento della dichiarazione delle tre variabili di tiro del dado è utile in due modi. Prima di tutto, crea un gruppo di righe di codice che include variabili correlate. In secondo luogo, i nomi delle variabili sono così simili e la dichiarazione segue lo stesso modello. Quindi, raggrupparli tra loro attira l'occhio sulle analogie e aiuta a esporre le differenze.

    Infine, la terza riga di spazi vuoti separa un altro gruppo di istruzioni correlate dalle istruzioni annidate if. Il gruppo di istruzioni che include la dichiarazione del metodo total e Console.WriteLine() è correlato allo scopo anziché all'aspetto. Il codice è incentrato sul valore totale ottenuto dai tre dadi e sul fatto che il tiro includa doppi o tripli. Queste righe sono correlate perché è necessario calcolaretotal e segnalare i risultati del tiro all'utente.

    Alcuni sviluppatori potrebbero sostenere che è necessario aggiungere una riga vuota tra la dichiarazione di total e quella diConsole.WriteLine(). Anche in questo caso, la scelta degli spazi vuoti spetta al giudizio personale. È consigliabile decidere quale sia più leggibile per te e usare questo stile in modo coerente.

    Tutto quello che si è lasciato è l'istruzione if. È possibile esaminarlo ora.

  10. Concentrandosi sulle righe di codice sotto la parola chiave if, modificare il codice nel modo seguente:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) 
    {
        if ((roll1 == roll2) && (roll2 == roll3)) 
        {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6; 
        } 
        else 
        {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    
  11. Si noti che le parentesi graffe di apertura e chiusura sono state spostate nella rispettiva riga per migliorare la spaziatura.

    I simboli { e } creano blocchi di codice. Molti costrutti C# richiedono i blocchi di codice. Questi simboli devono essere inseriti in una riga separata in modo che i limiti siano chiaramente visibili e leggibili.

    È anche importante usare il tasto tab per allineare i simboli dei blocchi di codice sotto la parola chiave a cui appartengono. Si noti, ad esempio, la riga di codice che inizia con la parola chiave if. Sotto tale riga si trova il simbolo {. Questo allineamento rende facile capire che { "appartiene" all'istruzione if. Inoltre anche l'ultimo simbolo } è allineato con l'istruzione if. La combinazione di allineamento e rientro semplifica la comprensione dell'inizio e della fine del blocco di codice.

    Alle righe di codice all'interno di questo blocco di codice viene applicato un rientro, a indicare che "appartiene" a questo blocco di codice.

    Si segue un modello simile con l'istruzione if interna e con l'istruzione else e con il codice all'interno di tali blocchi di codice.

Non tutti sono d'accordo con questa guida di stile per includere spazi vuoti. È tuttavia consigliabile usare queste linee guida come punto di partenza per la scrittura di codice. In futuro, è possibile discostarsi da questa guida in modo mirato.

Riepilogo

Ecco le principali lezioni apprese da questo esercizio:

  • Usare lo spazio vuoto in modo sensato per migliorare la leggibilità del codice.
  • Usare gli avanzamenti riga per creare righe vuote per separare le frasi di codice. Una frase include righe di codice simili o che interagiscono.
  • Usare gli avanzamenti riga per separare i simboli dei blocchi di codice in modo che si trovino nella rispettiva riga di codice.
  • Usare il tasto tab per allineare un blocco di codice con la parola chiave a cui è associato.
  • Impostare un rientro per il codice all'interno di un blocco di codice per indicare la proprietà.