Wielu programistów, po pierwszym spotkaniu z Pythonem, natychmiast zniechęca znaczeniem białych znaków. Słyszałem z różnych powodów, że jest to niewygodne, ale nigdy nie słyszałem skargi od programisty Python.
Oczywiście nie spotkałem wielu programistów Python, ponieważ swoją karierę spędziłem w świecie Java.
Więc moje pytanie dotyczy tych z was, którzy brali udział w dużym projekcie Python (ponad 3 miesiące, przy czym język Python jest głównym językiem używanym): Czy uważasz, że problem z białymi znakami jest niewygodny i ciągle denerwujący? A może to nie był problem, gdy już się pojawiłeś?
Nie zadaję tego pytania, ponieważ jestem za lub przeciw Pythonowi, lub za lub przeciw używaniu białych znaków. Podoba mi się Python, ale nigdy nie używałem go do niczego dużego.
Proszę nie przedstawiać spekulacji, jeśli nie masz doświadczenia w Pythonie.
źródło
Odpowiedzi:
Jest tylko jeden przypadek, w którym uważam, że białe znaki są denerwujące, i to podczas modyfikowania istniejącego kodu, tak aby blok kodu musiał być mniej lub bardziej wcięty niż przedtem (np. Dodawanie lub usuwanie
if:
przed kodem). Pisząc w języku takim jak C, po prostu dodajeszif
parę nawiasów klamrowych i (w Emacs, lub wyobrażam sobie dobrego edytora) naciśnij Tab, aby umożliwić edytorowi automatyczne poprawienie wcięcia. W Pythonie musisz to zrobić sam. Oczywiście istnieją skróty edytora, aby zrobić to sam, więc nie jest tak źle, ale utrata redundancji nakłada nieznaczne dodatkowe obciążenie na programistę.Ogólnie rzecz biorąc, jest to wygrana, choćby po to, aby zapobiec zapełnieniu połowy ekranu następującymi liniami:
źródło
C-c >
lubC-c <
. Jednak nadal musisz to zrobić sam. Innymi słowy, ponieważ białe znaki i logika kodu nie są zbędne, nie można po prostu wybrać gigantycznego bloku i wywołaćM-x indent-region
(lub jakąkolwiek wersję edytora), aby wciąć wszystko „poprawnie”.Uwielbiam znaczące białe znaki Pythona. Dla mnie to idealny przykład DRY na poziomie syntaktycznym. Czytelny dla człowieka sposób wskazywania, gdzie zaczyna się i kończy blok kodu, polega na wcięciu. Jeśli chcesz, aby Twój kod był czytelny, musisz wciąć go niezależnie od języka. Głupie jest zmuszanie programisty do podania tych informacji dwa razy, raz dla kompilatora / interpretera i raz dla ludzi. Co więcej, wcięcie w językach podobnych do C jest podobne do komentarza: ma na celu poprawę zrozumiałości, ale jego znaczenie nie jest egzekwowane przez kompilator / interpreter i może bardzo łatwo zsynchronizować się z prawdziwym znaczeniem (tam, gdzie są nawiasy klamrowe), zaciemnianie, a nie wyjaśnianie.
źródło
Znaczące białe znaki są dla mnie wygodne . To sprawia, że piszę mniej. Starannie i dość jednoznacznie formatuje kod. Z tego powodu sprawia, że kod jest bardziej czytelny.
(Z tych samych powodów lubię też spacje w Haskell).
źródło
Kiedy po raz pierwszy użyłem Pythona, białe znaki były nowe, a zatem irytujące ograniczenie.
Teraz nawet tego nie zauważam. Używam Pythona od 11 miesięcy.
źródło
Po pierwsze - moje języki chleb i masło to Python, SQL i Java. Uwielbiam białe znaki Pythona - jest mniej składniowe i pisanie, i zmusza ludzi do pisania czytelnego, starannie sformatowanego kodu. OTOH, nienawidzę gadatliwości Javy - do tego stopnia, że faktycznie używam Pythona do generowania całego bojlera, który muszę napisać w Javie, co imponuje wszystkim moim współpracownikom Java, którzy są zaskoczeni moją produktywnością.
Jedynym dużym zastrzeżeniem jest jednak kopiowanie / wklejanie kodu z sieci - często powoduje to mieszane spacje i tabulatory, co wymaga dodatkowego kroku w celu wyczyszczenia, i zwykle łapię tylko po wyjątku czasu wykonania.
źródło
highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"
w moim vimrcJeśli programista jest zirytowany znaczeniem białych znaków, prawdopodobnie nie zostanie programistą pythonowym.
źródło
Założę się, że znalazłeś znaczne nakładanie się między ludźmi, którzy mają problem ze znaczną spacją, a tymi, którzy nie mają doświadczenia z dobrym edytorem tekstów dla programistów, takim jak Emacs, który obsługuje większość wcięć bez ich zaangażowania.
W każdym razie po zinternalizowaniu Pythona nie jest to już problemem; w rzeczywistości jego zwięzłość i niewielka przestrzeń na ekranie stają się wielką zaletą dla czytelności. Ponieważ używam głównie Pythona, uważam, że języki, w których występuje większa nadmiarowość (np. Java i C #), trudno jest zdyscyplinować samemu pisać. Umieszczanie nawiasów klamrowych wokół kodu, którego wcięcie już sprawia, że jego struktura jest wyraźna, działa mi na nerwy.
źródło
W przypadku faktycznego kodowania wcale nie jest to niewygodne, ale w rzeczywistości korzystne (patrz odpowiedź dsimcha).
Może to być denerwujące, gdy mamy do czynienia z technologiami komunikacyjnymi, które nie szanują wiodących białych znaków (takich jak wiele forów nie zorientowanych na programowanie, a także osadzanie kodu Python w innym języku, takim jak języki szablonów HTML), mimo że uważam to za bardziej wada w narzędziach usuwających wiodące białe znaki niż wada w Pythonie, to prawda, że zbędne języki, które wyrażają strukturę kodu dwa razy, są lepiej przygotowane do obsługi takich destrukcyjnych środowisk (ponieważ można wkleić kod do edytora i automatycznie reindent oparty na wyraźnych znacznikach strukturalnych lub po prostu nie przejmuj się, czy kod jest wykonywany, a nie odczytywany przez ludzi).
źródło
Nie uważam białych znaków za denerwujące. Brak lub niespójne wcięcie uważam za bardzo denerwujące w innych językach. Rozumiem, że ten problem jest jednym z problemów, które styl ma rozwiązać.
Python nie jest jednym z moich podstawowych języków.
Czasami uważam, że obsługa tabulatorów i spacji jest denerwująca. Może to powodować problemy przy przełączaniu edytorów z jednej edycji na inną lub podczas edycji kodu, który napisał ktoś inny. Rozwiązanie jest zwykle trywialne.
źródło
Pochodzę z tła w języku C # / JavaScript / XBase w żadnej określonej kolejności, aw moich rozmowach z Pythonem nie jest to dla mnie żadna uwaga. To jest jak aparat ortodontyczny w innych językach - tak to działa, włóż rzeczy tak, jak mówią reguły, i osusz oczy, to moje podejście.
źródło