Spacja czy tabulacja?

Pytanie dręczące pokolenia programistów od zarania dziejów programowania tekstowego. Kto ma racje? Zapraszam do lektury na temat mojego osobistego i subiektywnego poglądu na tę sprawę.

Dlaczego warto używać tabulacje?

  • jedna tabulacja zamiast 2, 4, czy 8 spacji to 1, 3, lub 7 przyciśnięć klawisza mniej (i sporo nerwów mniej jeśli liczba znaków w pewnym momencie się nie zgadza),
  • brak problemu z przekopywaniem się strzałkami przez kilka poziomów kodu w postaci spacji (czyli kilkanaście-kilkadziesiąt znaków),
  • oszczędność rozmiaru kodu (w kodowaniu UTF-8 2 bajty vs kilka(naście) bajtów),
  • kod w Pythonie nie przestanie znienacka działać, bo w jednym miejscu zapomniało się dodać 16-tej spacji, zamiast 15  :evil:,
  • możliwość ustawienia sobie „długości” tabulacji na taką, jaką się chce, we wszystkich sensownych środowiskach

Dlaczego warto używać spacje?

  • postępowanie zgodne z większością standardów,
  • nie jesteśmy zdani na łaskę środowiska odnośnie formatowania zawijanych linijek kodu, co w przypadku tabulacji czasem wygląda tak:
  • kod wygląda tak samo we wszystkich środowiskach (co nie koniecznie musi być zaletą, o czym później),
  • eee…. hmm… ???

Skończyły mi się argumenty. A serio szukałem po Internecie, pytałem kolegów w pracy… i nic. Zupełnie nic więcej. Chętnie poznam wasze, jeśli komuś coś przyjdzie do głowy.

Co mówią mądrzy ludzie w korpo?

Google: 2 spacje (android 4 spacje, zawijane linie 8 spacji)
Twitter: 2 (lub 4 spacje dla zawijanych linii)
Mozilla: 4 spacje
Java: 4 spacje, tabulacje muszą być ustawione jako 8 spacji, obie wersje są akceptowalne

A więc spacje… hmm?

Co mówią sami programiści?

 

Źródło

W tym miejscu powtórzę, że długość tabulacji zawsze można ustawić w każdym szanującym się edytorze tekstu. W gorszej sytuacji są ludzie preferujący inną ilość spacji, niż została zastosowana w danym projekcie.

To może trochę statystyk z życia gita wziętych

Posługując się narzędziem Popular Convention on Github lub bazując na wynikach TAKIPI BLOG okazuje się, że około 66% projektów używa spacji zamiast tabulacji:

Z czego to wynika? Z preferencji programistów, czy może z narzuconych standardów? Ja tego nie wiem, mogę się jedynie domyślać 🙂

Główny argument za spacjami to…

fakt, iż kod wygląda wszędzie tak samo. I wcale nie uważam tego za zaletę. Dlaczego? Otóż środowisko programistyczne jest stworzone po to, aby służyć programiście. Jeśli środowisko formatuje/wyświetla kod nie tak, jak tego chcemy, to może znaczy, że warto pomyśleć o odpowiednich zmianach na takie, które nam pasuje? Moim osobistym, nie specjalnie doświadczonym przez życie, zdaniem, kod powinien się automatycznie dostosowywać do preferencji programisty. Programisty, który dany kod czyta, a nie tego, który go pisał.

Podsumowanie

Nie da się ukryć, iż jestem w obozie tabulacji. Dlaczego? Po prostu tak nakazuje mi logika. Nawet jeśli standard wymaga używania spacji, staram się konfigurować środowiska, których używam tak, aby konwertowały tabulacje na spacje. Wydaje mi się, że żyjemy w czasach kiedy środowiska są tak nowoczesne, rozbudowane i customizowalne, iż pozwalają na ustawienie ich jak nam się żywnie podoba. Jest to tylko moje osobiste zdanie i z przyjemnością dam się przekonać do spacji, jeśli tylko ktoś zdoła wytoczyć sensowniejsze argumenty, niż upośledzenie niedopracowanych środowisk z początków tego i końca zeszłego wieku. Abstrahując od wyboru, najważniejsze jest jednak, aby trzymać się konwencji. To co najbardziej irytuje to: