Ćwiczenie — używanie białych znaków w celu ułatwienia odczytywania kodu

Zakończone

Projektanci wydruku i sieci Web rozumieją, że umieszczenie zbyt dużej ilości informacji w małej przestrzeni przytłocza przeglądarkę. Dlatego strategicznie używają białych znaków lub negatywnej przestrzeni do rozbicia informacji w celu zmaksymalizowania możliwości przyswojenia głównego komunikatu dzieła przez osobę oglądającą.

Deweloperzy mogą korzystać z podobnej strategii podczas pisania kodu w edytorze. Dzięki wykorzystaniu białych znaków do przekazania znaczenia deweloperzy mogą zwiększyć przejrzystość przeznaczenia kodu.

Co to jest biały znak?

Pojęcie „biały znak” odnosi się do poszczególnych spacji tworzonych za pomocą klawisza space bar, odstępów tworzonych za pomocą klawisza tab i nowych wierszy tworzonych za pomocą klawisza enter.

Kompilator języka C# ignoruje białe znaki. Aby zrozumieć, jak białe znaki są ignorowane i jak zmaksymalizować przejrzystość przy użyciu białych znaków, wykonaj następujące ćwiczenie.

Dodawanie kodu w celu zilustrowania sposobu ignorowania białych znaków przez kompilator języka C#

  1. Upewnij się, że masz pusty plik Program.cs otwarty w programie Visual Studio Code.

    W razie potrzeby otwórz program Visual Studio Code, a następnie wykonaj następujące kroki, aby przygotować plik Program.cs w edytorze:

    1. W menu Plik wybierz pozycję Otwórz folder.

    2. Użyj okna dialogowego Otwórz folder, aby przejść do folderu CsharpProjects, a następnie go otworzyć.

    3. W widoku Eksplorator programu Visual Studio Code wybierz pozycję Program.cs.

    4. W menu Wybór programu Visual Studio Code wybierz pozycję Wybierz wszystko, a następnie naciśnij Delete.

  2. Wprowadź następujące kod:

    // Example 1:
    Console
    .
    WriteLine
    (
    "Hello Example 1!"
    )
    ;
    
    // Example 2:
    string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");
    
  3. W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.

  4. W widoku EKSPLORATOR, aby otworzyć terminal w lokalizacji folderu TestProject, kliknij prawym przyciskiem myszy pozycję TestProject, a następnie wybierz polecenie Otwórz w zintegrowanym terminalu.

  5. W wierszu polecenia terminalu wpisz polecenie dotnet run , a następnie naciśnij Enter.

    Powinny zostać wyświetlone następujące dane wyjściowe:

    Hello Example 1!
    Hello Example 2!
    
  6. Pośmiń chwilę, aby zastanowić się, co ten wynik informuje o tym, jak należy używać białych znaków w kodzie.

    Te dwa przykłady kodu ilustrują dwa istotne fakty:

    • Białe znaki nie mają znaczenia dla kompilatora. Jednak...
    • Prawidłowo użyte białe znaki mogą zwiększyć możliwości odczytania i zrozumienia kodu.

    Prawdopodobnie napiszesz kod raz, ale musisz wielokrotnie odczytywać kod. W związku z tym należy skoncentrować się na czytelności pisanego kodu. W miarę upływu czasu zobaczysz, kiedy i jak używać białych znaków, takich jak znak spacji, karty i nowe wiersze.

    Pierwsze wskazówki:

    • Każde pełne polecenie (instrukcja) ma znajdować się w oddzielnym wierszu.
    • Jeśli pojedynczy wiersz kodu stanie się zbyt długi, możesz go podzielić. Należy jednak unikać arbitralnego dzielenia pojedynczej instrukcji na wiele wierszy, chyba że jest dla tego dobra przyczyna.
    • Używaj spacji po obu stronach operatora przypisania.
  7. Zastąp istniejący kod następującym kodem:

    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;
        }
    }
    

    Zwróć uwagę, że ten kod nie zawiera dużo białych znaków. Ten kod będzie używany do zilustrowania podejścia do dodawania białych znaków do aplikacji. Skuteczne odstępy powinny ułatwić zrozumienie działania kodu.

    Uwaga

    Kod używa Random klasy , aby pomóc w opracowaniu symulowanej gry kostką, w której całkowita wartość z trzech rzutów jest używana do oceny "zwycięskiego" wyniku. Kod przyznaje dodatkowe punkty za toczenia doubles lub triples. Nie musisz w pełni rozumieć tego kodu, aby zobaczyć korzyści wynikające z dołączania białych znaków.

  8. Pośmiń chwilę, aby zastanowić się, jak używać białych znaków, aby poprawić czytelność tego kodu.

    Ten kod ma dwie cechy, na które należy zwrócić uwagę:

    • Nie zawiera pionowych białych znaków. Inaczej mówiąc, nie ma pustych wierszy rozdzielających wiersze kodu. Cały on stanowi jeden gęsty blok.
    • Bloki kodu zdefiniowane przez otwierający i zamykający nawias klamrowy ({ }) są złączone, utrudniając wizualne określenie ich granic.

    Mówiąc ogólnie, aby zwiększyć czytelność, wprowadzasz pusty wiersz między dwoma, trzema lub czterema wierszami kodu, które wykonują podobne lub powiązane rzeczy.

    Tworzenie fraz w kodzie za pomocą pionowych białych znaków jest subiektywne. Możliwe, że dwóch deweloperów nie zgodzi się na to, co jest najbardziej czytelne, ani kiedy dodać biały znak. Użyj własnego osądu.

  9. Aby dodać odstęp pionowy, który zwiększa czytelność, zaktualizuj kod w następujący sposób:

    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;
        }
    }
    

    Pierwszy wiersz białych znaków służy do oddzielania deklaracji dice zmiennej od wierszy kodu używanych do przypisywania wartości do zmiennych rzutowych. To rozdzielenie ułatwia sprawdzenie, jak dice jest używany w kodzie.

    Następny wiersz odstępu oddziela deklarację zmiennych rzutowych od deklaracji total. Grupowanie deklaracji trzech zmiennych rzutowych jest przydatne na dwa sposoby. Najpierw tworzy grupę wierszy kodu, która zawiera powiązane zmienne. Po drugie nazwy zmiennych są tak podobne, a deklaracja jest zgodna z tym samym wzorcem. Grupowanie ich ze sobą zwraca uwagę na podobieństwa i pomaga uwidocznić różnice.

    Na koniec trzeci wiersz białych znaków oddziela inną grupę powiązanych instrukcji od zagnieżdżonych if instrukcji. Grupa instrukcji, która zawiera deklarację total i Console.WriteLine() metoda jest powiązana z celem, a nie wyglądem. Twój kod koncentruje się na całkowitej wartości osiągniętej przez trzy kostki i czy rzut zawiera podwójne lub potrójne. Te wiersze są powiązane, ponieważ należy obliczyć total i zgłosić wyniki rzutu do użytkownika.

    Niektórzy deweloperzy mogą twierdzić, że należy dodać pusty wiersz między deklaracją total a Console.WriteLine(). Ponownie, wybór białych znaków jest do twojego najlepszego osądu. Należy zdecydować, który jest bardziej czytelny dla Ciebie i konsekwentnie używać tego stylu.

    Wszystko, co pozostało, to if instrukcja . Teraz możesz to sprawdzić.

  10. Koncentrując się na wierszach kodu poniżej słowa kluczowego if , zmodyfikuj kod w następujący sposób:

    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. Zwróć uwagę, że otwory i zamykające nawiasy klamrowe zostały przeniesione do własnej linii, aby poprawić odstępy.

    Symbole { i } tworzą bloki kodu. Wiele konstrukcji języka C# wymaga bloków kodu. Te symbole powinny znajdować się w osobnych wierszach, tak aby granice były dobrze widoczne i czytelne.

    Ponadto ważne jest, aby użyć klawisza tab do wyrównania symboli bloku kodu do słowa kluczowego, do którego należy blok. Na przykład zwróć uwagę na wiersz kodu rozpoczynający się od słowa kluczowego if. Poniżej tego wiersza znajduje się symbol {. To wyrównanie ułatwia zrozumienie, że { instrukcja "należy do".if Ponadto ostatni } symbol jest wierszem instrukcji if . Kombinacja wyrównania i wcięcia ułatwia zrozumienie, gdzie zaczyna się i kończy blok kodu.

    Wiersze kodu wewnątrz tego bloku kodu są wcięte, co oznacza, że "należą" do tego bloku kodu.

    Postępuj zgodnie z podobnym wzorcem z instrukcją wewnętrzną if i else instrukcją oraz kodem wewnątrz tych bloków kodu.

Nie wszyscy zgadzają się z tym stylem wskazówek dotyczących dołączania białych znaków. Należy jednak rozważyć użycie tych wskazówek jako punktu wyjścia podczas pisania kodu. W przyszłości możesz być celowy podczas podejmowania decyzji o odejrzeniu od tych wskazówek.

Podsumowanie

Najważniejsze wnioski z tego ćwiczenia:

  • Rozważnie używaj białych znaków, aby zwiększyć czytelność kodu.
  • Używaj znaków nowego wiersza do tworzenia pustych wierszy w celu rozdzielenia fraz kodu. Fraza zawiera wiersze kodu, które są podobne lub współpracują ze sobą.
  • Używaj znaków nowego wiersza do oddzielania symboli bloku kodu, tak aby znajdowały się one w osobnych wierszach kodu.
  • Używaj klawisza tab do wyrównywania bloku kodu do słowa kluczowego, z którym jest skojarzony.
  • Zwiększaj wcięcie kodu wewnątrz bloku kodu, aby zaznaczyć przynależność.