2013-06-04 15 views
7

Piszę zestaw funkcji Pythona, które wykonują pewien rodzaj sprawdzania zgodności na projekcie kodu źródłowego. Chciałbym podać dość szczegółowe nazwy dla tych funkcji, np .: check_5_theVersionOfAllVPropsMatchesTheVersionOfTheAutolinkHeader()Jaka jest maksymalna długość nazwy atrybutu w python?

Czy takie nadmiernie długie nazwy mogłyby być problemem dla Pythona? Czy istnieje maksymalna długość nazw atrybutów?

+4

Nie rób tego. Długie imiona nie zawsze są złe, ale są zapachem kodu. W tym przypadku skracam nazwę i umieszczam bardziej szczegółowy opis w ciągu znaków do dokumentu. Ponadto, albo logowałbym wyniki w sposób rozwlekły, albo wyłożyłem wyraźnie napisany wyjątek wyjaśniający niepowodzenie czeku. –

Odpowiedz

25

2.3. Identifiers and keywords z pytona Language Reference:

Identyfikatory są nieograniczone długości.


Ale będziesz naruszono PEP-8 najprawdopodobniej, który nie jest naprawdę cool:

Limit wszystkie linie do maksymalnie 79 znaków.

także będziesz naruszono PEP-20 (Zen Pythona):

Czytelność liczy.

+0

Cóż, dziękuję, ale dla części czytelności, nie mogę pozwolić, żeby to się liczyło: Dokładnie to próbuję osiągnąć tutaj. Nazwa funkcji mówi, co robi. Jeśli skracam, staje się mniej czytelny. (zaakceptuje twoją odpowiedź w 8 minut) –

+4

@AlexanderTobiasHeinrich Twój kod będzie _niezupełnie nieczytelny_. Użyj [docstrings] (http://www.python.org/dev/peps/pep-0257/). – kirelagin

+3

"W pełni opisowe" i "czytelne" to dwie odrębne rzeczy. Długie, długie, wielbłądowe struny są tym pierwszym, a nie drugim. – chepner

4

Mogą to być problemy dla programisty. Nazwy funkcji należy przechowywać w miarę krótko i używać dokumentów docstrukcyjnych do ich dokumentowania.

1

Ponieważ nazwy atrybutów są po prostu mieszane i włączane na klawiszach inst.__dict__ dla 99% klas, jakie kiedykolwiek napotkasz, nie ma rzeczywistego ograniczenia długości. Dopóki jest on zgodny z haseł, będzie działał jako nazwa atrybutu. Dla pozostałych 1% klas, które bawią się w sposób, który łamie gwarancję, że wszystko, co jest możliwe, jest poprawną nazwą atrybutu, poprzednia nie ma zastosowania.

Oczywiście, jak zauważyli inni, będziesz mieć problemy ze stylem i jakością kodu z dłuższymi nazwanymi atrybutami. Jeśli szukasz takich długich nazw, prawdopodobnie wskazuje to na wadę projektu w twoim programie i prawdopodobnie powinieneś popatrzeć na nadanie swoim danym bardziej hierarchicznej struktury i lepsze streszczenie i podział odpowiedzialności w twoich funkcjach i metodach.

+0

Naprawdę myślisz, że interpreter miesza nazwy metod w każdym wywołaniu? – kirelagin

+0

Byłoby bardziej produktywne, gdyby słowo "interpreter nie zawiera nazw metod mieszania dla każdego wywołania, zobacz ..." – hexparrot

+0

O ile nie korzystasz z JIT lub innego rodzaju interpretera optymalizującego lub przewidującego (co do mojej wiedzy nie jest CPython), tak. –

Powiązane problemy