Może jestem w tym sam, ale kilka rzeczy mnie denerwuje, jak ludzie wcinający zamiast spacji tabulatory. W jaki sposób pisanie jest SpaceSpaceSpaceSpacełatwiejsze i bardziej intuicyjne niż pisanie Tab? Jasne, szerokość tabulacji jest zmienna, ale znacznie bardziej wskazuje na wcięcie niż spacje. To samo dotyczy cofania; Backspace raz czy cztery razy?
Dlaczego języki takie jak Python zalecają używanie spacji zamiast tabulatorów?
indentation
Naftuli Kay
źródło
źródło
tab
. Jeśli nie możesz tego skonfigurować w swoim ulubionym edytorze, potrzebujesz lepszego edytora.Odpowiedzi:
Konsekwencja przede wszystkim.
Ponadto czasami pojawia się coś, co faktycznie używa białych znaków - jak Python: Powiedz mi, co się stanie, jeśli uruchomię następujący fragment kodu?
Są też frustrujące przypadki, gdy jeden edytor programisty ma tabulatory ustawione na 8 spacji, a inny ustawia je na 4, a ktoś używa 5 z jakiegoś dziwnego powodu ... Może wyglądać zupełnie normalnie na jednej stacji roboczej, ale wtedy, gdy jest zalogowany do SVN i ktoś inny aktualizują, zobaczą okropny, okropny bałagan.
Są to dwa naprawdę dobre powody, aby zawsze być spójnym, niezależnie od tego, czy są to spacje, czy tabulatory.
Jednak spacje pozwalają na znacznie większą kontrolę nad wcięciem niż tabulatory i nie wymagają żadnej specjalnej konfiguracji w edytorach, aby działała. (Chociaż można to ułatwić - na przykład w vimie, wystarczy
set expandtab
wstawić spacje za każdym razem, gdy naciśniesz klawisz Tab)EDYCJA: I dość zabawne, witryna wydaje się znormalizować moje zakładki do spacji, aby przeglądarka mogła poprawnie wyświetlać. Kliknij „edytuj”, aby wyświetlić oryginał z dołączonymi kartami;)
źródło
To dobra dyskusja na temat wcięć i białych znaków w Pythonie; z artykułu:
Co do argumentu dotyczącego naciskania klawisza spacji lub klawisza Backspace 2 lub więcej razy, ponieważ większość edytorów kodu źródłowego wstawi konfigurowalną liczbę spacji za jednym naciśnięciem klawisza Tab i podobnie bez wcięcia, nie ma więcej klawiszy naciskanych, gdy za pomocą spacji do wcięcia.
Dla siebie wolę spacje, ponieważ kod jest zawsze wyświetlany z taką samą ilością wcięć, niezależnie od tego, czy przeglądam go w IDE
less
, czy Notatniku; tzn. spacje są bardziej przenośne.źródło
W Pythonie wcięcia kontrolują przebieg programu i dlatego są niezbędne.
Jeśli weźmiesz kod sformatowany za pomocą kart i skopiujesz go, aby karty zostały zmienione lub utracone, struktura kodu zostanie zniszczona. Spacje to zawsze spacje = znacznie bezpieczniejsze.
Jeśli martwi Cię zużycie paska spacji, edytor można prawdopodobnie ustawić tak, aby automatycznie konwertował tabulacje na spacje.
źródło
.vimrc
dla mnieset softtabstop=4
, a zarówno TAB, jak i BACKSPACE użyją 4 spacji jako tabulacji. (Cóż, do każdego tabstopu, traktując szerokość jako 4 spacje)Zawsze należy używać spacji, ponieważ same tabulatory nie są wystarczająco elastyczne dla wielu stylów, a łączenie tabulatorów i spacji (prawie) zawsze powoduje absolutny bałagan.
Na przykład jednego stylu, który zwykle wymaga spacji, rozważ coś takiego:
O ile nie chcesz zmienić nazwy wszystkich swoich funkcji, aby były dokładną wielokrotnością rozmiaru tabulacji (minus jedna w nawiasie), same karty po prostu tego nie zrobią.
Jeśli chodzi o mieszanie tabulatorów i spacji, prawie natychmiast natrafisz na poważny problem: tabulatory nie są konsekwentnie rozwijane w ten sam sposób. Niektóre oprogramowanie traktuje kartę jako odpowiednik określonej liczby spacji. Inne oprogramowanie rozszerzy tabulację o określoną liczbę spacji - np. Pozycja po tabulacji zawsze zaczyna się od numeru kolumny, który jest wielokrotnością (powiedzmy) 8.
Nawet jeśli możesz się upewnić, że spacje nie zmieszają się z kartami, nadal masz problem: tabulatory również źle działają z czcionkami o zmiennej szerokości. Ten problem pojawia się, gdy (na przykład) chcesz dopasować końcowe komentarze:
W tej chwili wszystkie są idealnie ustawione. Jednak oglądane czcionką o zmiennej szerokości rzeczy stają się brzydkie. W przypadku spacji komentarze mogą (często będą) być nieco źle dopasowane. Jednak w przypadku kart przesunięcie często staje się dość radykalne:
Nagle niewielka różnica szerokości między „i” a „m” lub „x” w naszej czcionce o zmiennej szerokości została powiększona do całego tabulatora.
Najważniejsze jest to, że prawie każda zmiana w sposobie wyświetlania kodu za pomocą kart, bez względu na to, jak pozornie trywialna, może i zwykle spowoduje nieczytelny bałagan.
Aby odpowiedzieć na inne pytania: inni już to zauważyli, ale nie wyobrażam sobie, aby ktokolwiek w edytorze programowym (lub wiele innych rzeczy) faktycznie używał spacji do wstawiania spacji, więc twoje pytanie dotyczące: „pisania spacespacespacespace” nieistotne, ponieważ i tak nikt tego nie robi. Podobnie z odstępami wstecznymi: trudno jest wyobrazić sobie edytor, który wymagałby BkSpcczterokrotnego naciśnięcia, aby przejść do poprzedniego tabulatora, więc (ponownie) pytanie nie ma znaczenia.
Podsumowując: zakładki są w porządku, jeśli ty (i tylko ty) kiedykolwiek spojrzysz na swój kod, i robisz to tylko za pomocą jednego edytora, którego nigdy nie konfigurujesz (wcale!) Te warunki są jednak tak blisko, że niemożliwe egzekwuj, że jest tylko jedna rozsądna odpowiedź: nigdy nie używaj tabulatorów.
źródło
Dużym problemem jest niespójność szerokości „tab”, czasami są one renderowane jako cztery spacje, a czasem osiem. W wielu edytorach możesz ustawić, aby zawierały od 1 do 9 spacji.
Tak więc zmienia to prosty edytor WYSWYG w To, co widzisz, jest tym, co MOGĄ uzyskać inni.
Jest to szczególny problem dla Pythona, ale jest także problemem w każdym z języków „nawiasów klamrowych”, ponieważ wcięcia są używane do przekazywania znaczenia czytelnikom, a pomieszane karty utrudniają odczytanie kodu.
źródło