Jak sformatować długi adres URL w komentarzu Pythona i zachować zgodność z PEP8

85

W komentarzu blokowym chcę odwołać się do adresu URL, który ma ponad 80 znaków.

Jaka jest preferowana konwencja wyświetlania tego adresu URL?

Wiem, że bit.ly jest opcją, ale sam adres URL jest opisowy. Skrócenie go, a następnie zagnieżdżony komentarz opisujący skrócony adres URL wydaje się kiepskim rozwiązaniem.

Zach
źródło

Odpowiedzi:

77

Nie niszcz adresu URL:

# A Foolish Consistency is the Hobgoblin of Little Minds [1]
# [1]: http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
jfs
źródło
5
Zgadzam się; Jednak PyCharm nie ułatwia zignorowania (bez literowania kodu za pomocą brzydkich odwołań '# noinspection LongLine' (i podobnych) w każdym miejscu. Myślę, że większym problemem jest to, że format RST ma ograniczenie polegające na tym, że nie jest w stanie mają podział wiersza (który nie jest wyświetlany) w adresie URL.
4
Odpowiedź nie odpowiada, jak być zgodnym, więc jeśli masz linter, pozostaje z ostrzeżeniami.
Efren
4
@jfs, więc odpowiedź powinna naprawdę brzmieć: „w tym przypadku długa linia jest zgodna z PEP8”
Efren,
2
@Efren to jest dokładnie moja odpowiedź: * „jak sformatować .. i zachować zgodność z pep-8” * -> „nie łamać
adresu
2
Właśnie odkryłem klawisz Ctrl + klik ! TO właśnie dlatego nie chcesz przerywać adresu URL w komentarzu.
Bob Stein
69

Z PEP8

Ale co najważniejsze: wiedz, kiedy być niekonsekwentnym - czasami przewodnik po stylu po prostu nie ma zastosowania. W razie wątpliwości kieruj się najlepszą oceną. Spójrz na inne przykłady i zdecyduj, co wygląda najlepiej. I nie wahaj się zapytać!

Dwa dobre powody, aby złamać określoną zasadę:

  • Zastosowanie reguły sprawi, że kod będzie mniej czytelny, nawet dla kogoś, kto jest przyzwyczajony do czytania kodu zgodnego z regułami.

Osobiście skorzystałbym z tej rady i raczej zostawiłbym w komentarzu pełny opisowy adres URL dla ludzi.

Christian Witts
źródło
46

Możesz użyć # noqana końcu linii, aby powstrzymać PEP8 / Flake8 przed uruchomieniem tego testu. Jest to dozwolone przez PEP8 poprzez:

Specjalne przypadki nie są na tyle wyjątkowe, aby łamać zasady.

Sardathrion - przeciwko nadużyciom SE
źródło
3
Elegancki. Używam pyflakes w Vimie i nie dokonam zmiany, dopóki nie zwróci zerowych ostrzeżeń z uzgodnionego zestawu reguł (wymóg maccabe jest w naszym przypadku luźniejszy, ale nie dotyczy limitu 80 linii). Najkrótszy sposób, aby powiedzieć współpracownikom: nie podzieliłem multilinii, ponieważ nie ma to sensu.
Peter Host,
4
Dzięki @Sardathrion, powinno mieć więcej głosów, ponieważ faktycznie wnosi praktyczne rozwiązanie.
ezdazuzena
22

Powiedziałbym zostaw to ...

PEP20 :

Specjalne przypadki nie są na tyle wyjątkowe, aby łamać zasady.

Chociaż praktyczność przewyższa czystość.

Bardziej praktyczna jest możliwość szybkiego kopiowania / wklejania adresu URL, a następnie usuwania podziałów wierszy podczas wklejania do przeglądarki.

mata
źródło
15

Jeśli używasz flake8:

"""
long-url: http://stackoverflow.com/questions/10739843/how-should-i-format-a-long-url-in-a-python-comment-and-still-be-pep8-compliant
"""  # noqa
guyskk
źródło
-2

Używasz skracacza adresów URL, takiego jak Google, więc z tego:

http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

dostajesz:

http://goo.gl/93ZLQ

Low Kian Seong
źródło
9
Ryzyko jest oczywiście takie, że skracacz linków znika i nie mamy możliwości poznania linku. ArchiveTeam (prowadzony przez kierownictwo stowarzyszone z Archive.org) dokłada wszelkich starań, aby oszczędzać narzędzia do skracania linków…
Ahmed Fasih
1
I nie tylko to, ale oryginalny adres URL zawiera informacje dotyczące tego, co to jest. Skracacze adresów URL tracą te informacje.
Julien Chastang
-5

Moją opcją byłoby:

URL = ('http://stackoverflow.com/questions/10739843/'
       'how-should-i-format-a-long-url-in-a-python-'
       'comment-and-still-be-pep8-compliant')
Medardo Rodriguez
źródło
3
Zbyt bolesne, aby w ten sposób skopiować wklejony sposób.
Kel Solaar