Standardy kodowania kodu hostowanego na drupal.org sugerują użycie dwóch spacji do wcięcia kodu; inne witryny sugerują użycie tabulatorów do wcięcia kodu.
Jaki jest właściwy charakter wcięcia dla wszystkiego i w każdej sytuacji? Proszę wyjaśnić udzieloną odpowiedź.
coding-style
indentation
kiamlaluno
źródło
źródło
Odpowiedzi:
Przestrzenie
Karta może być różną liczbą kolumn w zależności od środowiska, ale spacja to zawsze jedna kolumna.
Pod względem tego, ile spacji (lub tabulatorów) stanowi wcięcie, ważniejsze jest zachowanie spójności w całym kodzie niż stosowanie jakiejkolwiek określonej wartości tabulacji.
źródło
Zakładki
Teraz oczywiście spójność jest ważniejsza niż jedno, a dobre IDE sprawia, że różnice są nieistotne. To powiedziawszy, celem tego wątku jest święta wojna, więc:
Wolę karty:
źródło
Używaj tabulatorów do wcięcia początku linii, jednej tabulacji na poziom wcięcia i pozwól wszystkim wybrać, jak szeroka ma być.
Użyj spacji, jeśli ustawiasz znaki w linii, więc zawsze są one ustawione niezależnie od wielkości tabulacji.
I znajdź i uderz wszystkich wczesnych autorów oprogramowania, którzy pozwolili, by ta głupia sprawa stała się problemem.
(Poważnie, dlaczego to w ogóle jest omawiane? Następnie powiesz mi, że chcesz również używać wielu znaków do łamania linii!)
źródło
Zakładki
Należy używać spacji, gdy tabulatory są całkowicie bezużyteczne.
Nawet w przypadku wyrównywania parametrów i komentarzy zakładki nadal działają lepiej .
źródło
Wszystkie argumenty na temat kart są świetne w teorii. Ale...
Tak, za pomocą zakładek możesz określić poziom wcięcia. I tak, możesz użyć kombinacji tabulatorów i spacji do wyrównania elementów. I w idealnym świecie tak by było
W rzeczywistości nie widać różnicy między spacjami i tabulatorami, zawsze wydają się mieszać podczas przesuwania kodu, a oglądanie kodu w innym programie, w którym tabulatory są ustawione na 8 kolumn, jest uciążliwe.
Kiedyś korzystałem z kart. Potem zacząłem pracować jako część zespołu i dzielić się kodem. Szybko stałem się zwolennikiem przestrzeni. Więc chociaż mogę współczuć z utopią kart, nie wyobrażam sobie, aby nie używać spacji.
źródło
public:
w deklaracjach klas C ++, dzięki czemu wyglądają ładniej (szczególnie w przypadku klas zagnieżdżonych).Niektóre istotne opinie, które mogą być interesujące:
źródło
Zakładki na zwycięstwo.
źródło
Ja absolutnie. nienawidzić. 4. spacje.
Dlaczego? Głównie dlatego, że mam dość poruszania się po kodzie za pomocą klawiatury i ciągłego naciskania,
left
left
left
left
aby przejść przez jedno wcięcie. Powstało z wczesnych wersji Notepad ++, a nawet zwykłego notatnika Windows, w którym nie było czegoś takiego jak przycisk formatu. Miałem tak wiele problemów, gdy ludzie używali tylko 3, gdy użyłem 4 wszędzie indziej.Innym powodem jest to, że znak tabulacji istnieje specjalnie dla wcięcia , a dopiero później został zaadaptowany do nawigacji. Dlaczego robimy,
space
space
space
space
gdy prostetab
działa? Dlaczego IDE powinno mieć do czynienia z kodem o 2-5 odstępach i poprawnie formatować, skoro działałaby prosta tabulacja i opcja preferencji?Niestety jestem mniejszością.
źródło
w
ib
(lube
ige
), aby pominąć białe znaki i tokeny: POsobiście lubię używać kart we wszystkim, ponieważ każdy programista może kontrolować wielkość wcięcia na kartę. W ten sposób zyskujesz elastyczność wyświetlania.
To powiedziawszy, zwykle naśladuję styl kodowania w pliku na początku (ponieważ spędzam dużo czasu na pracach konserwacyjnych).
źródło
Nie sądzę, że istnieje coś takiego jak właściwe wcięcie (przynajmniej nie bez drobnej wojny).
Osobiście lubię cztery spacje. Umożliwiają mi znacznie szybsze czytanie kodu i wyglądają tak samo w każdym edytorze - nawet Vi.
źródło
softtabstop
opcjęretab
orazretab!
polecenia i .Spacje, ponieważ kiedy wyrównujesz komentarze po prawej stronie kodu lub list parametrów funkcji, lub złożonych wyrażeń wielowierszowych, lub rzeczy tego rodzaju, chcesz, aby Twoja piękna praca była odpowiednia dla wszystkich . Jeśli użyjesz tabulatorów i umożliwisz innym ustawianie tabulatorów w inny sposób, przerywają one wyrównanie dla wszystkich oprócz najprostszych przypadków wcięcia kodu.
Poza tym oczywiste jest, że każdy na świecie powinien używać vima, co sprawia, że wcięcie, cofnięcie i poruszanie się po „tabulatorach” nawet w plikach z wcięciem jest trywialne.
źródło
Tabulatory są naturalnym i ortodoksyjnym wyborem, ponieważ z definicji są używane do wcięć.
Niestety, tabulatory są nierównomiernie zaimplementowane, więc jedynym rozwiązaniem w świecie rzeczywistym są 4 spacje.
źródło
Oczywiście potrzebujesz podejścia kombinowanego.
Jeśli dzielisz kod z innymi programistami, musisz ustandaryzować, a ponieważ jest to niemożliwe (koff koff), musisz zmusić wszystkich do zrobienia czterech spacji.
Następnie potrzebujesz edytora, który jest wystarczająco inteligentny, aby nie być głupim, aby wiedzieć, że powinien traktować linię z czterema spacjami z przodu, jak z wcięciem. Każdy nowoczesny IDE lub edytor programisty może automatycznie przepływać kod ze spacjami zamiast tabulatorów.
źródło
Dlaczego ktoś nie może tego zaimplementować:
Wszyscy są szczęśliwi, ponieważ widzą swój „własny” format
Czy to takie trudne?
źródło
indent
programu.Spacje lub tabulatory - To, co naprawdę mówi Atwood, to wybranie jednej rzeczy i zachowanie spójności w projekcie. Jedynym świętym graalem formatowania kodu jest upewnienie się, że jest on spójny, aby psychopata, który utrzymuje twój kod po tobie, nie czuł się zmuszony do trwałej naprawy sytuacji.
To powiedziawszy, jeśli pracujesz w Pythonie lub innym języku, w którym białe znaki są rzeczywistym konstruktem programistycznym, nie wyobrażam sobie używania tabulatorów.
źródło
Jestem facetem z 4 polami, zakładki po prostu nie są spójne.
źródło
Najwyraźniej tabulatory psują rzeczy w Delphi, więc nie używam tabulatorów w Delphi.
Jednak robię wszystko inne za pomocą Emacsa i zawsze używam tabulatorów, ponieważ moje zakładki idą dokładnie tam, gdzie chcę.
źródło
Odpowiedź jest taka, że dla każdej sytuacji nie może istnieć pojedynczy właściwy znak wcięcia. Formatowanie przy użyciu znaków jest nieelastyczne i może powodować konflikt, gdy w zespole stosowane są różne style.
Jedyną metodą bezbłędnego i elastycznego formatowania kodu za pomocą różnych stylów formatowania jest wykonanie go wirtualnie, to znaczy bez znaków wcięcia. Jedynym znanym mi edytorem kodu, który to obsługuje, jest ten użyty w poniższym przykładzie:
Aby zademonstrować wirtualny formatowanie , poniżej zrzut ekranu jest z edytora * XSLT, który korzysta z tej metody wcięcia (tam również krótki film tutaj ). Każdy znak w XSLT został podświetlony na żółto, w celach ilustracyjnych, aby umożliwić wyraźne widzenie jedynych znaków tabulacji lub spacji w treści. Wcięcie kodu jest obsługiwane przez system renderujący edytora dostosowujący lewy margines (który ma białe tło).
Jedyne wiodące znaki spacji poprzedzają wiersze Książki , ponieważ jest to dosłowna treść tekstu, a nie kod, te znaki spacji muszą zostać zachowane.
Dzięki wirtualnemu formatowaniu wybierasz szerokość wcięcia, aby dopasować je do środowiska i stylu wcięcia, nie wpływając na żadne znaki w pliku źródłowym. Możesz nawet ustawić szerokość wcięcia na 0, jeśli potrzebujesz spłaszczonego widoku kodu, jak pokazano poniżej:
Aby przeciwstawić to formatowaniu znaków spacji, ten sam XSLT otwarty w edytorze bez formatowania wirtualnego jest przekształcany przez autoformatator tego edytora w następujący sposób:
Większe puste żółte bloki na powyższym zrzucie ekranu wyraźnie pokazują znaki spacji dodane przez formatyzator konwencjonalnego edytora. Niestety, nie można ich teraz odróżnić od prawdziwej treści, dlatego XSLT musiałoby zostać zmodyfikowany, aby rozwiązać ten problem.
Podsumowanie
XSLT jest prawdopodobnie skrajnym przypadkiem, ale ta zasada obowiązuje w wielu językach programowania: Znaki powinny być używane w treściach i alternatywnej metodzie poszukiwanej, jeśli chodzi o formatowanie.
** Ujawnienie: Edytor XSLT z wirtualnym formatowaniem został opracowany przez moją własną firmę *
źródło
Do tej pory nie wspomniano: istnieją języki (Python, Haskell), w których znaczenie ma wcięcie. Ale 1 znak liczy się jako 1 znak, spacja lub tabulator, więc wcięcie widoczne przez kompilator może nie być takie samo, jak na ekranie, jeśli używasz tabulatorów.
Dlatego w językach takich jak Haskell spacje są koniecznością. W Makefiles TABS są koniecznością. We wszystkich innych jest to kwestia osobistego gustu, a obecnie nie ma wielkiego znaczenia - każdy porządny edytor ma polecenie „(wiodące) spacje do tabulatorów” i „(wiodące) spacje do tabulatorów”.
źródło
Kiedyś używałem spacji, ale ostatnio używałem tabulatorów wyłącznie dlatego, że takie było ustawienie Eclipse, kiedy w końcu zauważyłem. Wszyscy inni programiści w moim zespole używają Eclipse, więc sensowne było ujednolicenie zakładek, kiedy zdaliśmy sobie sprawę, że używamy ich już od wieków i nie było powodu, aby zawracać sobie głowę przechodzeniem na spacje. Byłem zaskoczony, jak wiele to nie było problemem.
Ustawienie wyświetlanego rozmiaru tabulatora na 3 lub 5 znaków w twoim IDE znacznie upraszcza rozróżnienie między sekcjami kodu, które są wcięte spacjami (prawie zawsze 4 w tych dniach), a tymi, które są wcięte tabulatorem.
źródło
Podano już wiele argumentów, ale nikt nie wspomniał, dokąd moglibyśmy zmierzać w przyszłości .
Tabulatory ani spacje!
Idealnie kod powinien być uważany za dane i nie powinien być przechowywany w żadnym konkretnym formacie tekstowym. Każdy programista może zastosować swój preferowany widok. Ponadto ten widok nie powinien ograniczać się do samego tekstu , ale może obejmować tabele, selektory kolorów i wzory matematyczne.
Ten pomysł nie jest zbyt daleko idący. To edytor programowania zorientowanego na język Meta Programming System (MPS) JetBrain po raz pierwszy uświadomił mi, że to rozwiązuje całą dyskusję, jednocześnie dodając wiele dodatkowych możliwości. (Tak, jest to możliwe dzięki wtyczkom edytora, ale praca nad tekstem bezpośrednio dodaje tyle niepotrzebnych zawiłości, w przeciwieństwie do podejścia MPS.)
W przeciwieństwie do tabulatorów i spacji, istnieje kilka niedogodności, które można wspomnieć o bezpośredniej pracy z abstrakcyjnymi drzewami składni . Wszystko, czego potrzeba, to dojrzewanie technologii do komercyjnie opłacalnego produktu. Pojawiają się pierwsze oznaki tego. Powstała w oparciu o MPS, komercyjny edytor skryptów akcji , Realaxy .
Chciałbym zobaczyć, jak jeden z dużych graczy skacze na koncepcję tej technologii i widzi, co się stanie!
źródło
Żadne nie jest lepsze, żadne nie jest gorsze. Jedyną ważną rzeczą jest konsekwencja.
Jeśli jesteś jednym zespołem, wybierz to, co lubisz. Zastanów się, jakie jest domyślne zachowanie ulubionego edytora, ale wybierz cokolwiek chcesz.
Jeśli jesteś w zespole, rób to, co robi zespół. Kropka.
W różnych pracach używałem dwóch spacji, czterech spacji, ośmiu spacji, tabulatorów, spacji i tabulatorów, myślę, że mogłem również użyć jednej spacji. Mówię mojemu redaktorowi, co ma robić, a potem już o tym nie myślę, redaktor opracowuje szczegóły.
Jedyną inną rzeczą jest wybranie inteligentnego edytora. Emacs czy vi? Teraz to święta wojna jestem gotów walczyć :-)
źródło