W miarę możliwości wolę wersję bez nawiasów klamrowych .
Poniższe wyjaśnienie jest długie. Proszę o wyrozumiałość. Podam przekonujący powód, dla którego wolę ten styl. Wyjaśnię również, dlaczego uważam, że zwykły kontrargument nie ma zastosowania.
(Prawie) puste linie to marnotrawstwo
Powodem tego jest to, że nawias zamykający wymaga dodatkowej linii kodu - podobnie jak nawias otwierający, w zależności od stylu. 1
Czy to wielka sprawa? Pozornie nie. W końcu większość ludzi umieszcza puste wiersze w kodzie, aby oddzielić logicznie nieco niezależne bloki, co znacznie poprawia czytelność.
Nie cierpię jednak marnowania pionowej przestrzeni. Nowoczesne monitory mają w rzeczywistości dużo przestrzeni poziomej. Ale przestrzeń pionowa jest nadal bardzo, bardzo ograniczona (chyba że używasz monitora ustawionego pionowo, co nie jest rzadkie). Problemem jest ta ograniczona przestrzeń pionowa : powszechnie uznaje się, że poszczególne metody powinny być jak najkrótsze, a odpowiadające nawiasy klamrowe (lub inne ograniczniki bloków) powinny mieć nie więcej niż różnicę wysokości ekranu, aby można było zobaczyć cały blok bez przewijanie.
Jest to podstawowy problem: gdy nie widzisz już całego bloku na ekranie, jego zrozumienie staje się skomplikowane.
W konsekwencji nie cierpię zbędnych pustych linii. Tam, gdzie pojedyncze puste linie mają kluczowe znaczenie dla rozgraniczenia niezależnych bloków (wystarczy spojrzeć na wygląd tego tekstu), kolejne puste linie są bardzo złym stylem w mojej książce (i z mojego doświadczenia są zazwyczaj znakiem początkujących programistów).
Podobnie powinny być linie, które po prostu trzymają klamrę i które mogłyby być oszczędzone. Blok pojedynczej instrukcji, który jest ograniczony nawiasami klamrowymi, marnuje jeden do dwóch wierszy. Widoczne jest to tylko przy 50 liniach na wysokość ekranu.
Pominięcie nawiasów klamrowych może nie zaszkodzić
Jest tylko jeden argument przeciwko pomijaniu nawiasów klamrowych: ktoś później doda kolejną instrukcję do danego bloku i zapomni o dodaniu nawiasów klamrowych, tym samym nieumyślnie zmieniając semantykę kodu.
To naprawdę byłaby wielka sprawa.
Ale z mojego doświadczenia tak nie jest. Jestem niedbałym programistą; a jednak, w mojej dekadzie doświadczenia w programowaniu, mogę szczerze powiedzieć, że nie zapomniałem kiedyś dodać nawiasów klamrowych, dodając dodatkową instrukcję do bloku singletonu.
Uważam nawet za niewiarygodne, że powinien to być powszechny błąd: bloki są podstawową częścią programowania. Rozdzielczość i określanie zakresu bloków jest automatycznym, zakorzenionym procesem umysłowym dla programistów. Mózg po prostu to robi (inaczej rozumowanie na temat programowania byłoby znacznie trudniejsze). Nie jest wymagany żaden dodatkowy wysiłek umysłowy, aby pamiętać o założeniu nawiasów klamrowych: programista pamięta przecież, że w końcu prawidłowo wcina nowo dodane polecenie; więc programista już mentalnie przetworzył, że w grę wchodzi blok.
Teraz jestem nie mówiąc, że pomijając szelki nie powodować błędy. Mówię tylko, że nie mamy dowodów w ten czy inny sposób. Po prostu nie wiemy, czy to powoduje szkody.
Tak więc, dopóki ktoś nie pokaże mi twardych danych zebranych z eksperymentów naukowych, wykazujących, że jest to rzeczywiście problem w praktyce, teoria ta pozostaje „ tylko taką historią ”: bardzo przekonującą hipotezą, która nigdy nie została przetestowana, i że musi nie być używane jako argument.
1 Ten problem czasami rozwiązuje się, umieszczając wszystko - w tym szelki - w tej samej linii:
if (condition)
{ do_something(); }
Uważam jednak, że można śmiało powiedzieć, że większość ludzi gardzi tym. Co więcej, miałby takie same problemy jak wariant bez nawiasów klamrowych, więc jest to najgorszy z obu światów.