Dlaczego kod Wordpress jest tak „szczęśliwy dla przestrzeni”?

22

Rdzeń WP, wiele wtyczek WP i same standardy kodowania WP wykorzystują bardzo „hojną aplikację” tego Spaceznaku (nie dla wcięcia, ale „wewnątrz” części i nawiasów). Wydaje się, że jest to unikalne dla Wordpress - ten styl / filozofia nie wydaje się być obecny w innych podobnych projektach, PHP lub w inny sposób.

Aby uzyskać więcej informacji na temat tego podejścia, zobacz: https://make.wordpress.org/core/handbook/coding-standards/php/#space-usage

Przykład: foreach ( (array) $foo as $bar ) { ...

Mam na myśli spację po foreach, po pierwszej (i przed finałem )(i inne podobne spacje pokazane w „Wykorzystaniu przestrzeni” pod linkiem powyżej).

Ten styl wydaje mi się niepotrzebny - wymaga więcej pisania i (opinia) utrudnia wizualną analizę kodu. (/ Opinia)

Pragnę nie dyskutować, czy ten styl jest dobrym pomysłem. Chcę po prostu zrozumieć motywy, dla których jest to zalecany styl. Nawet komentatorzy standardów kodowania WP są ciekawi:

wprowadź opis zdjęcia tutaj

Odpowiedzi udzielone na pytanie MK Safi są zasadniczo:

  1. Dla czytelności
  2. Status quo (aka „Tak po prostu jest”)

Moje rozumowanie polega na tym, że osobiście nie widzę dużej wartości w przyjmowaniu standardów kodowania WP (dotyczących „wykorzystania przestrzeni”) w naszych projektach wewnętrznych. Jestem jednak ciekawy, czy coś mi umknęło.

Czy są jakieś powody poza dwoma wymienionymi powyżej, pozornie ważne lub nie, aby stosować styl Wordpressa „Wykorzystanie przestrzeni”?

rinogo
źródło
2
Możesz robić, co chcesz, w swoich wewnętrznych projektach, o ile jesteś konsekwentny. Na marginesie, używamy tabulatorów zamiast spacji, więc prawdopodobnie potrzebujemy mniej pisania, nie znaczy to, że ma to jakiekolwiek znaczenie, jeśli masz nowoczesne IDE, które wykonuje całe formatowanie dla ciebie i może sformatować dla różnych stylów dla ciebie (np. Wysublimowany z pakietami, PHPStorm itp.)
Tom J Nowell
Dzięki za komentarz, @TomJNowell! Myślę, że może źle przekazałem swoje „pytanie” - mniej pytam o tabulatory / spacje dla wcięć, a więcej o regułach wymienionych w „Wykorzystaniu przestrzeni” na make.wordpress.org/core/handbook/coding-standards/php / ... . Przepraszam, nie byłem bardziej jasny!
rinogo
5
Czytanie jest łatwiejsze, gdy nie masz podświetlania składni. Właśnie dlatego używam tego stylu w wewnętrznych projektach. Muszę często edytować PHP w zwykłej konsoli z vi w minimalnej konfiguracji.
fuxia
2
FWIW, MediaWiki ma bardzo podobną konwencję stylową i faktycznie jest dość surowa w egzekwowaniu jej (przynajmniej w rdzeniu). Mają nawet skrypt do automatycznego dodawania brakujących spacji. Mogę tylko powiedzieć, że po pewnym czasie się do tego przyzwyczaja.
Ilmari Karonen
1
@ rinogo Wiem, komentarze są czasami tylko komentarzami, a nie odpowiedziami :)
Tom J Nowell

Odpowiedzi:

13

Rezonowanie

Odnośnie „białych znaków” (bez względu na to, czy tabulatory czy spacje): To po prostu osobiste preferencje, które utknęły w projekcie.

Standardy kodowania WP imo to bałagan i można je zignorować - pod warunkiem, że nie przyczyniasz się do rdzenia, który jest

  • inna historia i
  • tam też zostanie zignorowany przewodnik po stylach.

„[...] nie jest on stosowany z mocą wsteczną na starszym kodzie, ponieważ bardzo utrudnia korzystanie z historii svn / git. Oficjalna polityka mówi, że nowy kod powinien być zgodny z przewodnikiem po stylu, ale jeśli zdarzy się, że poprawnie sformatujesz sąsiedni kod niech tak będzie, ale łatki, które tylko formatują kod, lub zatwierdzają, że tylko kod formatujący są zabronione ”.

- @TomJNowell w komentarzach

Alternatywy

Lepiej trzymaj się standardów PSR (mianowicie: 2) lub rzeczy takich jak standardy Symfony (lub po prostu własne).

Wzrost wydajności i narzędzia

Nie ma zysku, który zyskujesz dzięki standardowi kodowania (oprócz posiadania jednego do dzielenia się i mniejszości, która go nienawidzi, podczas gdy reszta go dyktuje) lub posiadania większej lub mniejszej liczby tabulatorów lub spacji. Jeśli martwisz się niepotrzebnym miejscem na dysku lub może wolniejszymi programami, możesz nadal kompresować kod (zobacz projekt GitPHPHooks ) podczas zatwierdzania. Korzyść zyskasz będzie około max 5% od pierwotnego obszaru plików, prawie równe co do składni HTML kompresji / minifikacji daje. W tym celu dostępne są narzędzia minode dla Node.js.

To, co osobiście naprawdę mi się przydało, to PHP Linter i _PHP Mess Detector. Włączyłem oba do Biblioteki GitPHPHooks, więc nie muszę się o nią martwić ani myśleć.

kajzer
źródło
Przewodnik po stylach nie jest ignorowany dla Core, ale nie jest stosowany z mocą wsteczną w starszych kodach, ponieważ bardzo utrudnia korzystanie z historii svn / git. Oficjalna zasada głosi, że nowy kod powinien postępować zgodnie ze wskazówkami stylu, ale jeśli zdarzy ci się poprawnie sformatować sąsiedni kod, niech tak będzie, ale łatki, które tylko formatują kod, lub zatwierdzenia, że ​​tylko kod formatujący są zabronione
Tom J Nowell
@TomJNowell I dlatego czyni przewodnik po stylu bezużytecznym :) W każdym razie prześlij edycję i dodaj ją do odpowiedzi. To godne uwagi informacje.
kaiser
Wydaje mi się, że moje pytanie nie było zbyt jasne - mniej odnoszę się do tabulatorów zamiast spacji, a bardziej do „Wykorzystania przestrzeni” na make.wordpress.org/core/handbook/coding-standards/php/… . Wyedytuję pytanie, aby było jaśniej.
rinogo
1
@ rinogo Mam cię za pierwszym razem, stąd pierwszy akapit. Przy okazji uważam to również za bardziej czytelne.
kaiser
7

Odstępy po kropkach są normalne, na przykład $baz . '-5'ten styl jest używany w wielu standardach kodowania dla operatorów ( y + z).

Ma to na celu poprawę czytelności, na przykład jedna z nich jest bardziej czytelna niż druga.

$cow.$dog.$cat.$table.$chocolate.$puddle.$iterator.$stuctureone.$stucturetwo

$cow . $dog . $cat . $table . $chocolate . $puddle . $iterator . $stuctureone . $stucturetwo

Staje się to jeszcze bardziej oczywiste, gdy otoczony jest innym „kodem”.

Jeśli chodzi o spacje wokół nawiasów, ( 1, 2, 3 )nie mam pojęcia, myślę, że argumentem jest również czytelność.

Może to być mylące, ponieważ same standardy WordPress zawierają przykłady z nawiasami w komentarzach, które nie mają spacji, a sama baza kodu jest myląca z niektórymi częściami zawierającymi spacje, a inne nie (patrz zrzut ekranu poniżej), nawet w obrębie tej samej funkcji.

Większość standardów PHP robi coś wręcz przeciwnego. Nawiasy powinny zawierać treść. W rzeczywistości większość standardów kodowania dla innych języków zapisuje to w następujący (1, 2, 3)sposób : więc tajemnicą jest, dlaczego WP robi to w ten sposób.

Oto przykład do porównania z funkcją WordPress.

wprowadź opis zdjęcia tutaj

Większa wersja do porównania: http://i.imgur.com/nTEbV7v.jpg

Wolę ten po prawej, szczególnie gdy patrzę na pełny ekran kodu, ale jest to osobista preferencja.

Wyck
źródło
dzięki za odpowiedź! .Rozstaw sens dla mnie, jak .jest naprawdę tylko operator binarny, podobnie jak +albo -. Twoje przemyślenia na temat nawiasów „ściskających” ich treść są właśnie powodem, dla którego zadałem to pytanie. To zachowanie, wraz z jeszcze dziwniejszymi regułami, takimi jak te dla nawiasów kwadratowych (WP mówi, aby używać $foo['bar']i $foo[ $bar ]), właśnie dlatego zadałem to pytanie. :)
rinogo