2013-04-03 9 views
6

Zgodnie z instrukcją style guide należy używać podkreśleń, ale wiele wbudowanych funkcji języka Python tego nie robi. Jakie powinny być kryteria dla podkreśleń? Chciałbym pozostać w zgodzie z wytycznymi w stylu Pythona, ale ten obszar wydaje się nieco niejasny. Czy istnieje dobra zasada, czy opiera się na moim własnym osądzie, czy też nie ma to znaczenia w żaden sposób?Kiedy należy używać podkreśleń między wyrazami w nazwach funkcji Python (zgodnie z instrukcją stylu)?

Na przykład, czy powinienem nadać nazwę mojej funkcji isfoo(), aby pasowała do starszych funkcji, czy powinienem nadać jej nazwę is_foo(), aby pasowała do wytycznych stylu?

+0

Które z nich nie używają podkreśleń? – Blender

+4

wiele z tych funkcji zostało utworzonych przed podręcznikiem stylu. Zasadą jest używanie na przykład przykładów niedyskretnych: – JBernardo

+1

@Blender: ['isinstance()'] (http://docs.python.org/2/library/functions.html#isinstance). – Johnsyweb

Odpowiedz

4

Przewodnik styl pozostawia to do ciebie:

Nazwy funkcji powinny być pisane małymi literami, słowami oddzielonych podkreśleniami jako niezbędne w celu poprawienia czytelności.

Innymi słowy, jeśli czujesz się jak dodanie podkreślenia do nazwy metody byłoby łatwiej czytać - za wszelką cenę iść do przodu o jeden rzut tam (lub dwa!). Jeśli uważasz, że w bibliotece standardowej jest wystarczająco dużo innych podobnych przypadków, możesz go pominąć. Nie ma tu twardej reguły (chociaż inni mogą się z tym nie zgodzić). Jedyną rzeczą, która moim zdaniem jest powszechnie akceptowana, jest to, że nie powinieneś używać "CapWords" ani "camelCase" dla swoich metod. "CapWords" powinno być zarezerwowane dla klas i nie jestem pewien jakiegokolwiek precedensu dla "camelCase" w dowolnym miejscu (choć mógłbym się mylić) ...

+0

Edytowałem moje oryginalne pytanie, aby zadać pytanie dotyczące wątpliwości, które wyraziłem w jednym z komentarzy. Czy masz coś do dodania o tym, co jest dla niego lepsze, lub czy wybór w ogóle ma znaczenie? – ssb

+1

@ssb - Myślę, że ważne jest, aby wybrać coś dla swojego pakietu/modułu i trzymać się go. Dla funkcji 'iswhatever', zostawiłbym podkreślenie, ponieważ takie są funkcje wbudowane, ale to naprawdę zależy od ciebie. Po prostu nie ma 'isfoo' i' is_bar' w tym samym projekcie. Nie tego chcesz. – mgilson

+1

'camelCase' podczas używania' unittest' sprężyn do zapamiętania ... –

1

Przewodnik po stylu mówi, że należy używać podkreśleń , ale wiele wbudowanych funkcji Pythona tego nie robi.

Na przykładzie wbudowanego isinstance(), this was written in 1997.

PEP 8 -- Style Guide for Python Codewasn't published until 2001, która może wyjaśnić tę rozbieżność.

Jakie kryteria powinny być dla podkreślenia? Chciałbym pozostać w zgodzie z wytycznymi w stylu Pythona, ale ten obszar wydaje się nieco niejasny. Czy istnieje dobra zasada, czy opiera się na moim własnym osądzie, czy też nie ma to znaczenia w żaden sposób?

"When in doubt, use your best judgment."

Jest to styl przewodnik, a nie prawo! Postępuj zgodnie z instrukcjami, gdzie jest to stosowne, pamiętając o ograniczeniach (podkreślenie własne):

Nazwy funkcji powinny być pisane małymi literami, słowami oddzielone podkreślenia jest to konieczne w celu poprawienia czytelności.

mixedCase jest dozwolone tylko w kontekstach, gdzie to już panującego stylu (np threading.py) zachować wsteczną kompatybilność.

Dlatego ...

Na przykład, należy nazwać funkcję isfoo() pasujące do starszych funkcji lub należy nazwać to is_foo() dopasować wytyczną styl?

Należy prawdopodobnie nazwać isfoo(), aby postępować zgodnie z konwencją o podobnych funkcjach. Jest czytelny. "Readability counts."

Powiązane problemy