Ćwiczenie — usuwanie bloków kodu z instrukcji if
Deweloperzy oprogramowania uwielbiają, gdy mogą pisać kod, który zmniejsza liczbę naciśnięć klawiszy i oszczędza miejsce na ekranie, nie tracąc przy tym czytelności. Zastosuj tylko frazę "mniej jest więcej" w procesie programowania, gdy sprawia, że kod jest bardziej czytelny i zrozumiały.
Jeśli blok kodu wymaga tylko jednego wiersza kodu, szanse są, że nie musisz definiować formalnego bloku kodu przy użyciu nawiasów klamrowych. Chociaż technicznie nie trzeba nawet rozdzielać kodu na wiele wierszy, łączenie instrukcji w jednym wierszu może sprawić, że kod będzie trudny do odczytania.
Usunięcie nawiasów klamrowych zgodnie z powyższym opisem jest zmianą stylistyczną, która nie powinna mieć wpływu na funkcjonalność kodu. Należy jednak podjąć kroki, aby upewnić się, że zmiany nie wpływają negatywnie na czytelność kodu. Możesz ocenić wpływ usuwania nawiasów klamrowych i białych znaków, a następnie przywrócić oryginalny kod, jeśli okaże się, że zmiany wprowadzone w kodzie są mniej czytelne.
Tworzenie przykładu instrukcji if używającej bloku kodu
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:
W menu Plik wybierz pozycję Otwórz folder.
Użyj okna dialogowego Otwórz folder, aby przejść do folderu CsharpProjects , a następnie go otworzyć.
W panelu Eksplorator programu Visual Studio Code wybierz pozycję Program.cs.
W menu Wybór programu Visual Studio Code wybierz pozycję Wybierz wszystko, a następnie naciśnij Delete.
Wpisz następujący kod w edytorze programu Visual Studio Code:
bool flag = true; if (flag) { Console.WriteLine(flag); }Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Wprowadź
dotnet runpolecenie w wierszu polecenia terminalu, aby uruchomić kod.Sprawdź, czy są wyświetlane następujące dane wyjściowe:
TrueKod reprezentuje dobry punkt wyjścia, ale masz blok kodu zawierający pojedynczy wiersz kodu. W takim przypadku konieczne jest zdefiniowanie bloku kodu?
Usuń nawiasy klamrowe
Powyższy kod wykonuje blok kodu, gdy flag ma wartość true. Ponieważ ten blok kodu zawiera pojedynczy wiersz kodu, możesz usunąć nawiasy klamrowe.
Zaktualizuj kod w edytorze programu Visual Studio Code w następujący sposób:
bool flag = true; if (flag) Console.WriteLine(flag);Uwaga / Notatka
Usunięcie nawiasów klamrowych nie zmienia faktu, że
Console.WriteLine(flag);jest to blok kodu dla instrukcjiif.Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Zwróć uwagę, że dane wyjściowe są takie same jak poprzednio.
Powinny zostać wyświetlone następujące dane wyjściowe:
TrueJednak są dwa wiersze kodu mniej. Co najważniejsze, przy użyciu wiersza kodu poniżej wcięcia
ifkod jest nadal łatwo czytelny.
Sprawdź czytelność instrukcji if w postaci jednowierszowej
W tym kroku przyjrzysz się przypadkowi, w którym może mieć negatywny wpływ na czytelność kodu.
Ponieważ zarówno if instrukcja, jak i wywołanie Console.WriteLine() metody są krótkie, możesz być skłonny połączyć je na jednej linii. W końcu składnia języka C# dla instrukcji if umożliwia łączenie instrukcji w ten sposób.
Zaktualizuj kod w edytorze programu Visual Studio Code w następujący sposób:
bool flag = true; if (flag) Console.WriteLine(flag);Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Zwróć uwagę, że dane wyjściowe są nadal takie same.
Poświęć minutę, aby przemyśleć czytelność kodu.
Wyobraź sobie dwa poprzednie przykłady kodu zagnieżdżone w większej sekcji kodu. Łączenie poleceń w kodzie (tak jak zrobiono to w kroku 4) może utrudnić czytelność.
Podczas implementowania instrukcji
ifzawierającej blok kodu z jedną instrukcją firma Microsoft zaleca rozważenie następujących konwencji:- Nigdy nie używaj jednowierszowej formy (na przykład: if (flaga) Console.WriteLine(flaga);
- Używanie nawiasów klamrowych jest zawsze akceptowane i wymagane, jeśli dowolny blok w instrukcji złożonej if/else if/.../else używa nawiasów klamrowych lub jeśli pojedyncza treść instrukcji obejmuje wiele wierszy.
- Nawiasy klamrowe mogą zostać pominięte tylko wtedy, gdy treść każdego bloku skojarzonego z instrukcją złożoną if/else if/.../else jest umieszczona w jednym wierszu.
Aby sprawdzić wpływ czytelności na większe konstrukcje if-elseif-else, zaktualizuj kod w następujący sposób:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Zapisz plik kodu, a następnie uruchom kod przy użyciu programu Visual Studio Code.
Po uruchomieniu kodu powinien on wygenerować następujące dane wyjściowe:
Found SteveKod jest uruchamiany, ale te wiersze kodu są gęste i trudne do odczytania. Możesz ponownie sformatować kod, aby uwzględnić podział wiersza po instrukcjach
if,else ifielse.Porównaj właśnie uruchomiony kod z następującym kodem:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Zwróć uwagę, ile łatwiej jest odczytać drugi przykład kodu.
Podsumowanie
Oto kilka ważnych kwestii, o których warto pamiętać w kontekście if bloków poleceń kodu oraz ich czytelności:
- Jeśli zdasz sobie sprawę, że w blokach kodu
if-elseif-elseinstrukcji znajduje się tylko jeden wiersz kodu, możesz usunąć nawiasy klamrowe bloku kodu i białe znaki. Firma Microsoft zaleca spójne stosowanie nawiasów klamrowych dla wszystkich bloków kodu w instrukcjiif-elseif-else(czy są one obecne, czy konsekwentnie usunięte). - Usuń nawiasy klamrowe bloku kodu tylko wtedy, jeśli zwiększa to czytelność kodu. Dopuszczalne jest zawsze uwzględnianie nawiasów klamrowych.
- Tylko usuń znak nowego wiersza, jeśli sprawia, że kod jest bardziej czytelny. Firma Microsoft sugeruje, że twój kod będzie bardziej czytelny, gdy każda instrukcja zostanie umieszczona we własnym wierszu kodu.