Wojna o taby vs spacje w kodzie!


Często podnoszonym argumentem za tym żeby w kodzie używać 4 spacji zamiast jednego taba jest taki, żeby wszyscy programiści widzieli kod w taki sam sposób, bo jak każdy ma inną fizyczną szerokość taba to wtedy programista może nie zauważyć wcięcia.


Pytanie do osób na tagu #programowanie

czy KIEDYKOLWIEK mieliście problem używając tabów, którego by nie było gdybyście zamiast tego stosowali spacje?

edit: podajcie konkretne przykłady, snippety kodu

Komentarze (46)

redve

@wiatraczeg przykład takiego kodu?

wiatraczeg

@redve nie z no kod sam w sobie był okej, problem pojawił się w gicie i podczas pusha coś konwertowało Taba do jakiegoś białego znaku z dupy i kompilacja nie przechodziła, bo niewidoczny znak był emotikoną

redve

@Boukalikrates podałbyś przykład kodu?

cebulaZrosolu

@redve jak było z była w kinie? :D

redve

@cebulaZrosolu było spoko, i nie mam sie do czego przyczepić ale niewiele bym stracił gdybym nie poszedł xD

cebulaZrosolu

@redve czyli nie było buzi buzi?

JanPapiez2

@redve to może dała chociaż potrzymać za Cycerona?

LondoMollari

czy KIEDYKOLWIEK mieliście problem używając tabów, którego by nie było gdybyście zamiast tego stosowali spacje?

@redve Nie, bo od zawsze używam spacji. ( ͡° ͜ʖ ͡°)

Fausto

Kto pisze w pythonie ten się w cyrku nie śmieje

redve

@Fausto no pisze zawodowo w pythonie i nie miałem problemu

Fausto

@redve no waśnie bo używasz tylko spacji

nbzwdsdzbcps

@redve Nigdy nie miałem takiego problemu bo używamy lintera, który upewnia się, że będziemy mieli tak samo sformatowany kod. Problem miałem tylko przy pracy część ludzi na windows, część na mac.

vizharan

@nbzwdsdzbcps dodaj editorconfig.org obok lintera i pluginy do edytorów i problem pracy na różnych systemach też się skończy

nbzwdsdzbcps

@vizharan Teraz już jest dobrze ale kiedyś miałem taki problem, a nigdy spacje czy taby nie sprawiły mi problemów.

Rozpierpapierduchacz

What the fuck is a tabulator

A tak serio to się nie znam, ale tak mi się skojarzyło XD

jiim

Ja używam taba, ale też ustawiam vima by mi zamieniał na dwie spacje xD


Czemu spacje? Bo gwarantują taką samą czytelność pomiędzy różnymi IDE czy w terminalu.

redve

@jiim no dobra, ale czy chociaż raz kod był nieczytelny z tego powodu w innym IDE czy w terminalu?

W 95% można to zmienić w 5s danego IDE (a nie oszukujmy sie, jak często zmieniasz IDE na nowe, nieustawione?)

jiim

@redve no był, nie raz. I niekoniecznie kod, ale np. pliki konfiguracyjne propagowane na nowo tworzone serwery, gdzie nie zawsze masz czas i chęci je osobno konfigurować i używasz na szybko np vi czy cata.


Nie wszyscy to programiści, co ustawią sobie IDE wg siebie na workstacji i jadą na nim przez lata. Narzędzia np. adminów mają często krótki czas życia i zwykle generyczne ustawienia.

vizharan

Dawno dawno temu miewałem problemy, jako przyzwyczajony do taba (w nano było szybciej) sysdamin. Jak się wziąłem za programowanie to spacje wydały się naturalniejsze. Dzisiaj używam tylko edytora obsługującego konfiguracje za pomocą editorconfig.org i problem się rozwiązał. Każde repo które tworzę zawiera konfigurację w pliku .editorconfig, do każdego do którego coś commituję, staram się także to wprowadzić. Dostawałem pierdolca jak robiłem code review albo sam musiałem jakieś zmiany dodać do np. kodu w groovym do jobów jenkinsa (a miałem takie frameworki całe na tysiące linii) i co konsultant to w diffie były co chwilę zmiany formatowania plików, bo jeden używa vima, drugi intellija a trzeci vscode. Używając editorconfig można skonfiugrować zachowanie edytora dla każdego rozrzeszenia plików osobno i każdy edytujący naciska w edytorze co mu się podoba, wyświetla mu się to tak jak lubi, a pod spodem jest jeden format właściwy dla technologii. Samo trimowanie spacji z końca linii i pilnowanie znaków końca linii wyeiminowało mi w jednej firmie ponad 50% wiadomości na komunikatorze z problemami od mniej ogarnietych ludzi. Polecam gorąco.

Shagwest

@redve Przybywasz do nas z czasów, gdy nie korzystało się z narzędzi do formatowania kodu i różni programiści rzeczywiście pchali do repo kod ułożony według własnego widzimisie?


Swoją drogą, miałem kiedyś (właśnie w tamtych czasach) typa w pracy, który wrzucał swój kod wręcz losowo. Czasem poprzedzony 20 pustymi liniami, czasem wcięty na 10 spacji w stosunku do otaczających go linijek. I nie był w stanie dostrzec, że to jest źle sformatowane. Po prostu nie, nie widział tego, jego mózg jakoś to ignorował. Jak mu palcem pokazałeś i wytłumaczyłeś, co jest nie tak, to zwalał winę na IDE

FriendGatherArena

@redve nie, używam taba i VSC mi zamienia na 4 spacje

serel

Jako devops powiem: może nie problem, ale niższa czytelność. Przy debugowaniu problemów często skaczę po hostach, multum OSów i narzędzi i każde kurła po swojemu. Poprawiasz na szybko VIMem jakiś config zanim zmienisz ansibla - ZAWSZE ':set list' na dzień dobry, żeby się nie zdziwić. No jest to męczące

keborgan

@redve Dyskusja bez sensu, automat powinien narzucać formatowanie przy zapisie pliku.

koszotorobur

@redve - zaakceptuj jak pythona formatuje black i po problemie.

Odkąd wprowadziliśmy wymaganie, że cały kod ma się formatować automatycznie jako pre-commit hook to zniknęło wiele problemów i skończyły się głupie dyskusje.

ataxbras

@redve Nigdy. Zawsze używałem tabów bo to wygodne. Używałem ich nawet za czasów wojenek o tę sprawę.

koszotorobur

@ataxbras - jak widać te wojny się jeszcze nie zakończyły

ataxbras

@koszotorobur Oj, ale przygasły, tak jak edytorowe. Też mi ich brakuje

fisti

Jakoś do około 2010 roku czasami były z tym problemy, choć rzadko. Większość ogarniętych programistów używała spacji.

Potem były lintery, a teraz editorconfig.

redve

@fisti kurna czemu ja sie dopiero teraz dowiaduje o editorconfig xD

fisti

@redve Nie chcę smucić, ale to może wskazywać na to, że Twoje otoczenie jest zasiedziałe/zastałe, nie rozwija się, przespało zmiany, jest niechętne do podążania za nowoczesnymi standardami w branży; uważa, że nie ma na to czasu. Niekoniecznie, ale coś w tym może być.


Może rozejrzyj się za inną pracą? Przy okazji podwyżka wpadnie :)

koszotorobur

@fisti - Op dopiero zaczął swoją pierwszą prawdziwą robotę

fisti

@koszotorobur a, sorki xD

koszotorobur

@fisti - sam widzisz, że szybko się Tomeczek uczy - za rok czy dwa będzie się czuł na tyle pewnie, że robotę zmieni i będzie się cieszył chociaż wyższą wypłatą (bo na ogarniętych ludzi to trafić jest ciężko).

Catharsis

@redve Ja osobiście używam taba o szerokości 4 spacji, ale jak wiadomo standardem jest, że używa się formatowania kodu jaki uzgodniono w projekcie i zapisano w jakimś configu w zależności od języka. A IDE możesz sobie ustawić żeby ci to wyświetlał jak ci się tylko podoba, więc nawet jak w projekcie jest przyjęte, że spacja o szerokości 2 to ja i tak to widzę jako tab o szerokości 4 i elo. To jest problem, który został już bardzo dawno temu rozwiązany.

wombatDaiquiri

@redve go ma w standardowym linterze taby więc wszyscy używają tabów. Ale wydaje mi się, ze chyba można w IDE ustawić jak chcesz żeby ci się wyświetlało?

redve

@wombatDaiquiri rust ma w standardzie spacje, i domyślnie linter cie opierdoli za formatowanie

a w IDE chyba nie zmienisz tego że 8 spacji to 8 spacji, chyba że zmniejszysz szerokość pojedyńczej spacji, co rozwali reszte kodu

redve

chociaż czekaj, sprawdze swojego neovima

Catharsis

@redve W Rustcie możesz używać zarówno spacji jak i tabów, wystarczy zdefiniować to w configu. Rust ma bardzo fajne ustawienia defaultowe i nigdy nie czułem potrzeby zmieniania niczego, ale jak ktoś chce to opcji konfiguracji jest baaardzo dużo: https://rust-lang.github.io/rustfmt/?version=v1.8.0&search=

tomasz-frankowski

To bardziej wojna dla osób które mają wady wzroku, bo mogą sobie ustawić tab odpowiedniej szerokości. A spacjarze to osoby które nie pracują w teamach, albo piszą jednorazowe skrypty które tylko oni będą czytac.

baklazan

@redve W sytuacji w której wszyscy, ale to wszyscy, piszący dany kod używają tabów, dyskusja nt. "ile spacji ma 1 tab" nie istnieje. Używanie spacji rodzi ten problem.


Natomiast tak jak koledzy piszą wyżej, standard formatowania powinien być wymuszany odgórnie, najlepiej weryfikowany na CI.

izopropanol

Wyjebane, nawet nie wiem, czy VS jest skonfigurowany żeby używał tabów czy spacji, bo jest to całkowicie bez znaczenia

Meverth

@redve tak. Dano dawno temu, w bardzo odległej galaktyce....

W czasach DOS, Amigi, terminali itp. to miało znaczenie. Widziałem krzaki w kodzie, które bolały, jak się na to patrzyło.

Teraz.... teraz raczej nie, raczej każdy system już grzecznie zachowuje spójność każdy tab jest miej więcej traktowany jako 4 spacje. Oczywiście przez "kompatybilność wsteczną", albo "bo tak się robi" nie ma teraz z tym problemów. Może to jak ze szczepionkami, jak wszyscy się stosują do tego, problem nie jest widoczny, jak przestaniesz przestrzegać reguły to jak ze szczepionkami, ogólna odporność społeczności spadnie i problem znów się uwidoczni. Chcesz zaryzykować?

53c41f08-a3b2-4434-b685-977a7eb073a4

Zaloguj się aby komentować