Tworzenie app gdzie mamy ustawione tab na 4 spacje

Hej,

Mam takie głupie pytanie :frowning: , dawno nie bawiłem się ruby on rails.

Wróciłem do tego :smile: W edytorze mam ustawione tab na 4 spacje (korzystam z sublimetext3)
W konsoli daje rails new test.
i to mi generuję app gdzie wszędzie jest ustawione tab na 2 spację można z jakimś parametrem to zrobić by było na 4 spacje… i nie musiał kombinować w edytorze żeby mi to prze konwertował czy coś …

Jest jakiś powód dla którego chcesz jednak używać 4 spacji? Wcięcia na dwie spacje są dość mocno przyjęte w rubym i raczej lepiej jest się dostosować. A samego sublime’a można łatwo skonfigurować żeby domyślnie używał 2 spacji pod tabem.

1 Like

kurcze nie ma takiego powodu. Ale przyzwyczajony jestem do 4 :slight_smile: W samym sublime mam ustawione 4 ale jak otwieram jakiś plik to wygląda to tak:

jak widać jest niby 4 w kodzie jest 2 a wygląda to dziwacznie…

Bo masz ustawione na cztery :wink: Po prawej na dole będąc w pliku możesz sobie na szybko przełączyć na dwie i zobaczyć te pionowe linie od wcięć trochę gęściej :wink: Oprócz tego poszukaj gdzieś konfiguracji sublime’a pod ruby’ego, tam są domyślnie ustawione 2 spacje.

jak ustawię na 2 to “kreseczke” jest więcej ale ja właśnie chce 4 :smiley:

W Ruby przyjęty jest odstęp 2 spacji, jeśli poważnie myślisz o pracy w Railsach to musisz się przestawić.

2 Likes

Dodatkowo gdybyś miał używać hamla - a nie widze powodu dla którego byś nie miał, to tam musisz używać 2spacjowych. Ogólnie to jeżeli całe środowisko używa 2 spacji to dorabiasz sobię masę problemów stosując inne rozwiązanie.

@sarin są ludzie, którzy uparcie nie lubią hamla (wolą stare, “poczciwe” erb), slim chyba też ma dwu spacjowe wcięcia (jeśli dobrze pamiętam).

Dwie spacje w Ruby to tak jakby nieoficjalny standard. Jak planuje się pracować z kimś w zespole nad projektem w Ruby/RoR to trzeba się dostosować i przestawić na 2 spacje.

1 Like

Sam większość tego co pisałem to był Python, 4 spacje to standard wcięcia. Jak przyszło do pisania w Rubym… zmieniłem szerokość taba na 2 i tyle. Wcięcie to wcięcie, im mniejsze tym lepsze, bo się więcej kodu w linijce może zmieścić, zwłaszcza jak masz zagnieżdżone wywołania funkcji. Nikt mi nie powie, że przestawienie się z 4 spacji na 2 to jakiś problem, bo sam przez to przechodziłem i wszelkie problemy znajduje się na siłę, a nie dlatego, że coś naprawdę przeszkadza.

1 Like

HAML spoko ale wolę ERB jak kolega wyżej.

Przestawiłem się na 2 spację :slight_smile: nie mówiłem, że to takie ciężkie :slight_smile: jak trzeba to trzeba

Do Sinatry właśnie używam Slima, i faktycznie ma wcięcia na 2 spacje. Przy okazji dowiedziałem się z powyższego cytatu, że jest jeszcze ten Haml.
Owszem, optycznie 4 spacje są trochę głębszym wcięciem niż 2, co rzuca się w oczy porównując kod Rubiego do Pythona, ale właściwie jest to tylko kwestia ustawienia odpowiedniej wartości w edytorze, i załatwione.
Dla mnie jako dla osoby początkującej zagadnienie takiej czy innej głębokości wcięcia praktycznie nie istnieje, w przeciwieństwie do trudności z zaakceptowaniem “niedomkniętych” bloków kodu w Pythonie, definiowanych właśnie wcięciami. Ciężko mi je przyjąć (bo przypominają i działają jak wcięcia akapitów w poezji lub prozie), w porównaniu z eleganckimi blokami w Rubim, kończącymi się słowem end. Może to wpływ nauki Pascala na studiach.

4 czy 2 spacje - to chyba śmiało można nazwac problemem pierwszego świata ;p

zakładam, że to było o mnie, bo ja wspomniałem o HAMLu i ERB, ale powiedz mi gdzie napisałeś, że wolę ERB ?

Pewnie @piotrstanek wywnioskował to z Twojej wypowiedzi

i pomyślał że pisząc o poczciwym erb, piszesz o rzeczy którą nosisz w sercu.

I to jest właśnie problem czytania na szybko, i daleko posuniętego wnioskowania.

a) sam jestem zwolennikiem HAMLa ale znam osoby, które wolą ERB
b) wyraz “poczciwy” był w cudzysłowiu, co miało sugerować ironię

Dokładnie odwrotna logika przyświecała ‘twórcom’ przy ustalaniu konwencji pisania kodu Linuxa:

https://www.kernel.org/doc/Documentation/CodingStyle

Ruby czy Python to nie jest C. W C nie ma czegoś takie jak przekazywanie funkcji jako argumentu innej funkcji i nie ma też chainowania funkcji. Z resztą czytelny kod, niezależnie ile będzie miał poziomów wcięć będzie nadal czytelny. czasem lepiej zmieścić w kilkunastu linijkach kodu niż rozdzielać na dziesiątki funkcji, bo dopiero wtedy takie skakanie po kodzie powoduje że kod nie jest czytelny.

W każdym kontrolerze w RoR masz na dzień dobry już dwa poziomy wcięć.

Hm… to dlaczego ostatnim argumentem funkcji qsort jest wskaźnik na ‘komparator’ ? :wink: Bez jaj - przekazywanie funkcji jako argumentu jest w C dość częste).

A ponieważ funkcja to jedynie wskaźnik na pewne miejsce a pamięci, może być zwracana jako wynik (albo być polem w strukturze zwracanej jako wynik), więc chainowanie w C jak najbardziej istnieje.

Też stosuję 2 spacje jako wcięcia, ale pamiętam że swego czasu ta kontrowersyjna reguła 8 była prostym sposobem na wymuszenie pisania krotkich/prostych funkcji.

W kontekscie Railsow i czytelnosci, Sandi Metz zaproponowala 4 reguły:

  • Classes can be no longer than one hundred lines of code.
  • Methods can be no longer than five lines of code.
  • Pass no more than four parameters into a method. Hash options are parameters.
  • Controllers can instantiate only one object. Therefore, views can only know about one instance variable and views should only send messages to that object (@object.collaborator.value is not allowed).
3 Likes

Kilka linijek na w akcji kontrolera to się zgodzę, jeśli chodzi o klasy przechowujące logikę aplikacji, to już się z tym nie zgodzę. Początkowo też tak uważałem, jednak w końcu doceniłem ten sposób pisania kodu. Ważne jest tutaj aby nazwy metod były dobrze nazwane. Zgodzę się, że w pewnych sytuacjach (ale tylko w pewny) kilka linijek w metodzie może być, ale nie kilkanaście. Kilkanaście linijek w metodzie powoduje, że metoda jest bardzo ciężka w testowaniu, a później we wprowadzaniu zmian (po jakimś czasie).