Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Spacje czy tabulatory jak wcięcie
Forum PHP.pl > Inne > Hydepark
wookieb
Witajcie

Od lat używam znaku tabulacji do robienia wcięć w kodzie. Dlaczego TAB? Ponieważ wg mnie jest to klawisz do robienia właśnie tego typu rzeczy, czyli wcięć i odstępów.
Wielkość TAB-a można bez problemu zmienić nawet w VIM-ie
Taby łatwo zaznaczyć. Kopiowanie kodu z TAB-ami do innego kodu z TAB-ami jest łatwe. W przeciwnym wypadku jesteś zależny od preferencji poprzedniego autora kodu oraz jego rozmiaru monitora.
Dla mnie powyższe argument są niezbywalne. Mam wrażenie, że używam właściwego narzędzia do właściwych rzeczy.

Problem narodził się wtedy gdy chciałem zacząć używać PHP_CodeSniffer to sprawdzania składni kodu. Zassałem sobie standard Symfony2 i BUM. Nie można używać tabulatorów jako wcięć.
Noż cholera... chciałem w swoim projekcie użyć standardu Symfony2 i nie chcę zbytnio odbiegać od reszty ale spacje jako wcięcia? Dlaczego?
Czy wy stosujecie spacje? A może tabulatory?

Inne ciekawe standardy, których używam i nie zmienię:

Znak _ przed nazwami właściwości, metod prywatnych oraz chronionych -
Jak czytam kod to od razu wiem, że metoda jest prywatna albo chroniona i nie obchodzi mnie jej użycie publicznym API.
W dodatku metody ze znakiem "_" na początku są wygodnie sortowane w oknie podpowiedzi.

[i] Każdy if, switch i inne blokowe elementy zawsze posiadają klamry [i]
Wg poniższego schematu
  1. if ($someCondition === $anotherVariable) {
  2.  
  3. }

Ma to ogromne znaczenie dla Xdebug-a przy generowaniu pokrycia kodu

Jak u was ze standardami Coding Style?
nospor
Ja też używam TABów.

Raz mnie przekonywali, że to zły pomysł bo coś tam i coś tam. No za cholerę nie mogłem skumać w czym jest gorszy TAB od piętnastu spacji. Coś tam mówili właśnie o edytorach.... no ale sorki, jak edytor nie rozpoznaje TABa to znaczy, że to edytor jest do 4 liter a nie TAB.

Także nie przekonano mnie w żaden sposób do spacji. Na grzyba mój kod ma rosnąć w bajty, bo jakiś edytor TABa nie rozpoznaje poprawnie...
wookieb
Zapewne chodzi im o VIM w konsoli i nie znają polecenia
Kod
:set ts=4
nospor
Akurat mówiono o innym edytorze...chyba.... tak czy siak paranoja jakaś smile.gif

Zachęcam zwolenników spacji do wypowiadania się - może w końcu zrozumiem, dlaczego ja i wookieb jesteśmu "durni" używając TABa smile.gif


A wookieb, padał też cud argument, że w edytorach mogę sobie przecież ustawić, by edytor sam intpretował wciskany TAB jako 4 spacje. Normalnie bajka....
Theqos
http://www.codinghorror.com/blog/2009/04/d...e-infidels.html

Cytat
Choose tabs, choose spaces, choose whatever layout conventions make sense to you and your team. It doesn't actually matter which coding styles you pick. What does matter is that you, and everyone else on your team, sticks with those conventions and uses them consistently.

That said, only a moron would use tabs to format their code.
pedro84
No to dołączam do szacownego grona "durnych" biggrin.gif

Spacje sracje. Używam TABów. Próbowałem się przekonać w Symfony 2, nie wyszło i już chyba nie wyjdzie smile.gif
lobopol
Czyli będę dziwny, używam spacji. Jakie są moje powody?
1. W firmie wszyscy używają
2. Mniejsze problemy przy uruchamianiu kodu na cudzych edytorach (nie zawsze mam ze sobą komputer u znajomych, a mam coś pokazać, a osoba akurat ma dziwny edytor)
3. Ludzie nie będą z moim kodem takich cyrków jakie ja miałem z kodem jednej osoby (używała tabów, ale w swoim edytorze miała ustawioną długość wyświetlania taba na 1-2 spacje i po przejęciu kodu miałem bardzo szerokie okno edycji)

wookieb
2) Nie spotkałem jeszcze edytora dla programistów, który nie obsługuje tabulatorów. Notatnik to nie edytor dla programistów
3) i własnie wtedy sobie ustawiasz, że tab to 4 spacje i po kłopocie.
lobopol
wowkieb
2Teraz to już rzadkość, ale częściej potrafi się zdarzyć dziwna konfiguracja długości tabów
3. tylko co mi to daje jak dostaje kod który ma taby użyte dosłownie jak spacje? Nie będę przecież do każdego cudzego kodu przestawiał sobie edytora. Szczególnie, że nie działam na jednym projekcie naraz.
nospor
Cytat
tylko co mi to daje jak dostaje kod który ma taby użyte dosłownie jak spacje?
No i właśnie dlatego TABa powinno się używać jak TABa a nie jak x spacji smile.gif
#luq
Cytat(nospor @ 18.02.2012, 16:23:41 ) *
No i właśnie dlatego TABa powinno się używać jak TABa a nie jak x spacji smile.gif


Dokładnie. Ustawiacie edytor żeby interpretował taba jako X spacji.
Żaden argument za używaniem spacji nie przekona mnie do korzystania z niej do wcięć bo wszystkie argumenty bije jeden:
[tab] to jedno naciśnięcie na wcięcie, [spacja] to przynajmniej 2 naciśnięcia na wcięcie.


Co do stylu pisania korzystam jeszcze z 2 ciekawych rzeczy:

1. Zawsze piszę:

  1. if(true == $foo)
  2. // nie if($foo == true)


wtedy jak się walne o jedno "=" mam wypluwanego errora.

2. Odwrócenie warunku & return

Mając taki kod w jakiejś metodzie

  1. if($foo == $bar){
  2. // duzo linijek kodu
  3. }
  4. else{
  5. $zar = true;
  6. }


Odwracam go i wale returna, tj:

  1. if($foo != $bar){
  2. $zar = true;
  3. return;
  4. }
  5.  
  6. // duzo linijek kodu


o wiele czytelniejsze
lobopol
nospor co do tego to jest to oczywiste, ale problem się pojawia gdy ktoś robi takie numery, przy spacjach by tego już nie zrobił smile.gif.

Co do takich nietypowych rzeczy to przy zmiennych używam przedrostki określające typ zmiennej np.
  1. $iNumber = 10;
  2. $sString = 'string';
  3. $aArray = array();
  4. $oObject = new object();
  5. .itd
wookieb
Masz na myśli notację węgierską. Aktualnie niestosowaną. Jak zmienisz typ zmiennej to masz niezły refactoring w którym żadne narzędzie Ci nie pomoże.
Zrób to w teamie, gdzie chociaż jeden programista jest troszkę bardziej leniwy... pozamiatane.
Crozin
#luq: Porządny edytor powinien wyświetlić Ci ostrzeżenie o przypisaniu wartości w IF-ach, pętlach czy argumentach dla funkcji. Jakoś nigdy nie przekonam się do "waunków Yody" wink.gif

PS. Oczywiście do wcięć wyłącznie TAB.
lobopol
wookieb na szczęście w pracy wszyscy stosują ten układ smile.gif.
vokiel
Tylko TAB, chociażby ze względu na ilość wcięć. Nie rozumiem osób, które podnoszą kwestię długości wcięcia przy tab'ach, argumentując to tym, że na innym komputerze, w innym edytorze wygląda gorzej - właśnie dzięki stosowaniu TAB'a można to ustawić zgodnie z indywidualnymi potrzebami. Za to zamiana ze spacji na tabulator już takiej możliwości nie daje.
Kolejna kwestia to edycja kodu ze spacjami w przypadku, gdy nie korzysta się z auto-formatowania i używa się tabulatorów. Mając element wysunięty za daleko, chcąc go "cofnąć" trzeba usunąć kilka znaków zamiast jednego.
Tabulator jest też wygodniejszy przy formatowaniu pionowych bloków, kolumn kodu.
  1. $krotka_zmienna = '2 tab';
  2. $bardzo_dluga_zmienna = '1 tab - nie liczę spacji';


Jeśli chodzi o klamry otwierające - zawsze na końcu linii nie w nowej. Chyba głównie przyzwyczajenie z JavaScript, ale przy okazji oszczędność linii, więcej widać na ekranie.
#luq
Cytat(Crozin @ 18.02.2012, 17:34:02 ) *
#luq: Porządny edytor powinien wyświetlić Ci ostrzeżenie o przypisaniu wartości w IF-ach, pętlach czy argumentach dla funkcji. Jakoś nigdy nie przekonam się do "waunków Yody" wink.gif


Niestety WebStorm tego nie robi, ale mnie jakoś to nie przeszkadza, kwestia nawyku. Co do ostżeżenie przy przypisaniu w pętlach to ja bym miał takie często tongue.gif
  1. for($i = 0, $cnt = count($arr); $i < $cnt; $i++){

Więc mogłoby mnie to wkurzać, chyba że da się takie rzeczy konfigurować w IDE
Fifi209
Też używam tabulatorów, znacznie szybciej niż cykanie x razy spacji

Ostatnio zmieniłem też styl pisania z:
  1. if () {
  2.  
  3. }else{
  4.  
  5. }


na :
  1. if ()
  2. {
  3.  
  4. }
  5. else
  6. {
  7.  
  8. }


Kod staje się moim zdaniem bardzo czytelny, mimo że jest kilka linii więcej. Poza tym taki styl narzuca mi IDE do C# i się przyzwyczaiłem, piszę teraz tak we wszystkim.

I oczywiście to o czym pisał wookieb, czyli znak _ przed prywatnymi i chronionymi
wookieb
Czy tylko dla mnie wydaje się żenujące to jak mówicie, że aby uzyskać odstęp "4 spacji" to naciskacie spacje 4 razy? Na czym wy piszecie - na maszynie do pisania?
Przecież każdy edytor (nawet taki stary KED2) ma opcje ustawiania, że wcięcie to "spacje" albo "tabulator".

Jesteście ignorantami czy jak?
lobopol
Ja mam w netbeans właśnie 4 spacje na taba ustawione, a Fifi zapewne nie wiedział, że tak można smile.gif
Kostek.88
Uważam, że po to wymyślili TAB, żeby robić wcięcia, a SPACEBAR po to, żeby robić odstępy. Nie widzę powodu, żebym miał teraz łamać ten schemat tylko dlatego, że innym ZDARZA SIĘ go łamać. Co prawda nie miałem takiej sytuacji, żeby otworzyć kogoś kod i ujrzeć coś co zobaczył @lobopol, ale wydaje mi się, że to jest wyjątek, a odstępstwa od jakiejś reguły zdarzają się zawsze, więc naprawdę nie chcę się przerzucać na spację tylko dlatego.

Oczywiście jeśli komuś wygodniej jest używać spacji, niech używa, nie twierdzę przecież, że taki ktoś jest gorszy, przedstawiam tylko swoją opinię. Dlatego ładnie nam zacytował @Theqos.

Co do innych przyzwyczajeń, to oczywiście

  1. private function _funkcja1()
  2. {
  3. // kod
  4. }
  5.  
  6. public function funkcja2()
  7. {
  8. // kod
  9. }


Na pewno też staram się (nie zawsze mi to wychodzi wink.gif ) pisać klamry otwierające funkcje w osobnej linijce, natomiast w if-ach i pętlach już nie. Czasem, jeśli jest to czytelne w kodzie, używam tych if-ów skróconych (shorthand), niekiedy bardzo mi to pomaga:

  1. $zmienna == true ? echo 'blabla' : echo 'bleble';


albo

  1. ($zmienna == true) ? echo 'blabla' : echo 'bleble';


@#luq: podobają mi się Twoje metody smile.gif

@Fifi209: wiesz, jakiś czas temu próbowałem przestawić się na "rozwlekanie" if-ów, ostatecznie kodowało mi się przez to niewygodnie (nie pytaj dlaczego, bo to już moje przyzwyczajenia), aczkolwiek faktycznie ładnie się to czyta otwierając cudzy projekt smile.gif
lobopol
Kostek.88, a nie wygodniej
  1. echo $zmienna == true ? 'aaa' : 'bbb';
sazian
a ja używam ALT+SHFT+F i jakoś mnie szczególnie nie interesowało co tam netbeans wstawia - sprawdziłem wstawia cztery spacje.
Jeśli chcę ręcznie zrobić ostęp po prostu wciskam tab ale edytor i tak wstawi spacje.
Ktoś podał argument że tab łatwiej usunąć, a guzik prawda wystarczy ustawić się w wybranej linii lub zaznaczyć kilka i wcisnąć SHIFT+TAB i co tu takigo trudnego


wookieb
Cytat(sazian @ 18.02.2012, 22:44:50 ) *
a ja używam ALT+SHFT+F i jakoś mnie szczególnie nie interesowało co tam netbeans wstawia - sprawdziłem wstawia cztery spacje.

To wszystko możesz zmienić. Zobacz ustawienia autoformatowania
Kostek.88
Cytat(lobopol @ 18.02.2012, 23:35:23 ) *
Kostek.88, a nie wygodniej
  1. echo $zmienna == true ? 'aaa' : 'bbb';


Ano wygodniej smile.gif Co prawda chodziło mi o ideę skróconych if-ów tylko, ale dzięki za wskazówkę.
sazian
Cytat(wookieb @ 18.02.2012, 22:46:25 ) *
To wszystko możesz zmienić. Zobacz ustawienia autoformatowania

tak można tylko po co ? co mi to da że będę miał taby.
Powiem szczerz że ja wolę spację, dlaczego ? często otwieram kod w konsoli (poleceniem cat ale częściej grep) i wtedy nie mam żadnych problemów z odstępami. Oczywiście mogę skonfigurować terminal, tylko po co mam wykonywać dodatkową pracę ? co mi to da ?

Cytat(lobopol @ 18.02.2012, 22:35:23 ) *
Kostek.88, a nie wygodniej
  1. echo $zmienna == true ? 'aaa' : 'bbb';

ja bym dał warunek w nawiasy
  1. echo ($zmienna == true) ? 'aaa' : 'bbb';

bardziej przypomina normalnego ifa i dzięki temu lepiej widać część logiczną - a tak swoją drogą to nie wiedziałem że można bez nawiasów biggrin.gif
wookieb
Cytat(sazian @ 18.02.2012, 22:59:20 ) *
Powiem szczerz że ja wolę spację, dlaczego ? często otwieram kod w konsoli (poleceniem cat ale częściej grep) i wtedy nie mam żadnych problemów z odstępami. Oczywiście mogę skonfigurować terminal, tylko po co mam wykonywać dodatkową pracę ? co mi to da ?


Ja używam 4 okien konsoli ułożonych obok siebie i mam ustawiony rozmiar tabulacji na 2.
Szlag mnie trafia gdy czasem otwieram kod z Symfony2 i BUM - 4 spacje i nic z tym nie mogę zrobić...

konole
Cytat(wookieb @ 18.02.2012, 23:16:15 ) *
Ja używam 4 okien konsoli ułożonych obok siebie i mam ustawiony rozmiar tabulacji na 2.
Szlag mnie trafia gdy czasem otwieram kod z Symfony2 i BUM - 4 spacje i nic z tym nie mogę zrobić...

Bardzo prosty powód. Brak jakichkolwiek konwencji w środowisku PHP. Popatrz na Railsowców. Zawsze spacje, zawsze 2 razy. I 100% zgodności. I nie chodzi tutaj tylko o zgodność tabów między edytorami na Windowsie. Ale również na Linuxie i Mac OS, co już nie zawsze jest spełnione. I dodatkowo czasem kod się sypie przy kopiowaniu i wklejaniu, jeśli używa się TAB.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.