Zalecenia dotyczące niejawnego i jawnego łączenia linii

9

Chciałbym poznać zalecenia dotyczące niejawnego łączenia linii a jawnego łączenia linii w Pythonie.

W szczególności, czy wolisz jedną formę od drugiej? Co polecasz jako ogólne domyślne? Jakie masz kryteria wyboru jednego, a jeśli preferujesz jedno, kiedy robisz wyjątki dla drugiego?

Mam na myśli odpowiedź na to pytanie, która odzwierciedla moje uprzedzenia, ale zanim opublikuję własną odpowiedź, chciałbym wiedzieć, co myślą inni ... i jeśli możesz mieć lepszy zestaw kryteriów niż to, co mam na myśli, wtedy z pewnością zaakceptuję twoją odpowiedź nad własną.

Niektóre z rekomendacji można uogólnić na ten wybór w innych językach programowania, ale moja stronniczość jest nieco silniejsza w Pythonie ze względu na niektóre funkcje specyficzne dla języka, więc chciałbym poznać zarówno ogólne, jak i centralne rozumowanie Pythona, które możesz mieć na ten temat.

Na pewnym tle dyskusja toczyła się wokół konkretnego pytania na temat przepełnienia stosu , ale pomyślałem, że bardziej odpowiednie jest przeniesienie dyskusji tutaj jako pytania, aby uniknąć zaśmiecania odpowiedzi na SO za pomocą tej stycznej, ponieważ zmieniła temat z tematu oryginalne pytanie. Możesz spojrzeć na to pytanie i jego odpowiedzi na przykładowe fragmenty kodu, które wywołały dyskusję.

Oto uproszczony przykład:

join_type = "explicit"
a = "%s line joining" \
    % (join_type)
# versus
join_type = "implicit"
b = ("%s line joining"
     % (join_type))
aculich
źródło
Pytania na temat najlepszych praktyk są poza tematem do przeglądu kodu. Migrowałem twoje pytanie do lepszego miejsca.
Winston Ewert
1
@WinstonEwert przed opublikowaniem dobrze przyjrzałem się często zadawanym pytaniom CodeReview i FAQ programistów , a także wybrałem CodeReview, ponieważ wyraźnie mówi, że pytania, które należy tam zadać, obejmują „Najlepsze praktyki i użycie wzorców projektowych w kodzie”. Dołączyłem uproszczoną wersję tego kodu, więc jak to jest nie na temat?
aculich
@WinstonEwert Wysłałem pytanie do Meta dotyczące wyjaśnienia CodeReview FAQ, jeśli chcesz skomentować to tam.
aculich

Odpowiedzi:

8

Istnieje dokument w stylu kodowania o nazwie PEP8. Odradza stosowanie \<NL>wszędzie tam, gdzie można użyć nawiasów.

Preferowanym sposobem owijania długich linii jest użycie implikowanej kontynuacji linii w Pythonie w nawiasach, nawiasach i nawiasach klamrowych. Długie linie można podzielić na wiele linii, zawijając wyrażenia w nawiasach. Powinny być używane zamiast używania odwrotnego ukośnika do kontynuacji linii. Upewnij się, że odpowiednio wcięto ciąg dalszy. Preferowanym miejscem na obejście operatora binarnego jest po nim, a nie przed nim.

Pełny tekst: http://www.python.org/dev/peps/pep-0008/ (sekcja Układ kodu)

Nie jest to obowiązkowe, ale określa akceptowalne dobre praktyki, które są szczególnie przydatne, jeśli masz w zespole wiele osób odpowiedzialnych za Python.

Mischa Arefiev
źródło
1

Zwykle używam niejawnego łączenia linii, ponieważ uważam, że jest bardziej czytelny, a wsparcie redaktorów jest zwykle lepsze w odniesieniu do wcięcia i wyróżnienia całego wyrażenia dzięki dopasowaniu nawiasów.

jcollado
źródło
0

Obecnie wolałbym

join_type = "kiding"
a = "%s line joining" % (join_type)

B-))

.

Wolę łączyć jawne linie, ponieważ nie lubię bałaganu parenów na końcu wyrażeń.
Ale lubię łączenie linii niejawnych, aby zmniejszyć szerokość zajmowaną przez pisanie łańcucha.
W niektórych przypadkach wstydzę się nie mieszać dwóch sposobów

eyquem
źródło
1
Żartuję na bok, nie lubię jawnego łączenia, ponieważ wymaga więcej pisania i trudno jest zachować wszystkie ukośniki odwrotne podczas edycji kodu.
martineau
najwyraźniej @eyquem nigdy nie napisał LISP ...
cowbert