Najlepsza odpowiedź
Najpierw pozwolę sobie na wstęp, mówiąc, że jestem zawodowym programistą od około 10 lat i zajmuję się programowaniem od prawie 20 lat (odkąd byłem bardzo młody). Napisałem PHP, Java, C ++, Python, JavaScript, C #, ASP i QBasic (tak, jestem stary). Regularnie zajmuję się również SQL, CSS i HTML.
Używałem edytorów w systemach Windows, Linux i Mac. Korzystałem również z edytorów w oknach terminala. Programuję zawodowo od około 10 lat. Z własnego doświadczenia mogę powiedzieć, że korzystałem z ponad 30 edytorów (zarówno edytorów tekstu, takich jak VIM i Nano, jak i IDE, takich jak Visual Studio i PhpStorm), że domyślne wyświetlanie zakładek w edytorach jest bardzo różne.
Co więcej, nawet jeśli nadasz im te same ustawienia, czasami masz inne dziwactwa i niespójności spowodowane przez edytor lub czcionkę edytora. Spacje po prostu nie mają tego problemu, ponieważ są standardową konstrukcją języka.
Jedną rzeczą, którą zauważyłem konsekwentnie, jest to, że większość przewodników po stylach programowania, takich jak PHP-FIG, mówi o używaniu spacji tabulatorów. To jest tabulacja, która używa spacji do naśladowania znaku tabulacji. Czasami nazywane inteligentnym tabulowaniem.
Jest to obsługiwane w każdym edytorze, o którym myślisz, że jest dość nowoczesny. Więc spór o prędkość jest całkowicie śmieszny. Co do argumentu o zajmowanym miejscu na dysku. Dosłownie nikt nie dba o około pół bajta dodatkowego rozmiaru pliku. Jeśli to jest twoje zmartwienie, to dostajesz po królewsku miejsce na dysku i koszty.
Pozostał tylko argument wizualny. To jest miejsce, w którym spacje pozostawiają w kurzu klapki. Nie zobaczysz spójności kart, które widzisz ze spacjami. Spacje wyglądają tak samo w każdym edytorze. Karty różnią się znacznie i jeśli kiedykolwiek będziesz musiał otworzyć plik w edytorze terminala (powiedzmy, kiedy sprawdzasz coś na zdalnym serwerze), nienawidzisz zajmowania się kartami, zwłaszcza gdy musisz przewijać w prawo w edytorze tekstowym.
Jeśli chcesz spójności i standaryzacji (zwłaszcza najpopularniejszych standardów), użyjesz spacji. Jeśli chcesz skupić się tylko na śmiesznych skargach i wkurzyć innych programistów, z którymi pracujesz, użyj tabulatorów.
Odpowiedź
Przewaga tabulatorów nad spacjami to:
- Poszczególni programiści mogą wybierać różne wcięcia dla swojego kodu.
- Zajmują również mniej miejsca.
Karty mają jednak problemy.
Karty słabo współpracują przy maksymalnych szerokościach kolumn. Projekt wybiera maksymalne szerokości kolumn z kilku powodów, w tym upewniając się, że programiści mogą wykonywać równoległe porównania na swoich monitorach oraz zapewniając, że programiści mogą szybko skanować kod. (Długie wiersze zmniejszają szybkość czytania. To jeden z powodów, dla których wydawcy używają wielu kolumn w podręcznikach).
Załóżmy, że Twój standard kodowania określa maksymalną długość wiersza na 80 kolumn.
Pierwszy programista Developer ma wiersz, który został wcięty cztery razy i używa ustawienia wcięcia dwóch znaczników. Oznacza to, że kod jest wcięty w 8 kolumnach. Deweloper pisze pełną linię. Ta linia składa się z 72 znaków.
Ten kod trafia do recenzenta. Recenzent patrzy na kod z 4-znakowym wcięciem tabulacji. Cztery zakładki mają teraz szerokość 16 znaków. Wiersz przechodzi teraz do kolumny 88. Recenzent każe programistowi odciąć 8 znaków.
Drugi recenzent, który patrzy na kod, używa wcięcia 8 znaków. Recenzent patrzy na kod, używając 8-znakowego wcięcia tabulatora. Cztery zakładki mają 32 znaki szerokości. Recenzent mówi programiście, aby odciął 24 znaki.
Te problemy znikną, jeśli użyjesz spacji lub określisz jednolite ustawienie tabulacji dla organizacji. Jeśli określasz stałe ustawienie tabulatora, wyeliminowałeś jeden z głównych argumentów przemawiających za używaniem tabulatorów na początku.
Rozważmy teraz tutaj dokument lub wieloliniowy ciąg zawierający sformatowany tekst. Możesz osadzić diagram utworzony za pomocą narzędzia takiego jak asciiflow lub monodraw. Jeśli używasz tabulatorów do wcięć, to wcięcie rysunków będzie wymagało użycia kombinacji wcięć i spacji. Aby to działało z różnymi wcięciami tabulatorów, wymagane jest:
- Użycie kombinacji początkowych tabulatorów, po których następują spacje, aby wyrównać do danej kolumny. Wszystkie linie obrazu muszą mieć tę samą liczbę wcięć tabulatora, w przeciwnym razie obraz nie będzie wyglądał poprawnie, gdy zostanie użyty z innymi ustawieniami wcięcia tabulatora.
- Wstawienie znaku markera wskazującego początek sekcji rozdzielanej spacjami. na przykład \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Porzucenie standardu tabulatorów w tych obszarach graficznych.
- Zakaz wielowierszowych ciągów lub komentarzy.
Wszystkie te problemy znikają, gdy używasz spacji jako wcięć.