🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #28017

Re: Przydatne narzędzia.

#28017
From: Rob Wolfe
Date: Mon, 02 May 2011 20:39
46 lines
3099 bytes
Petey <efrinut@gmail.com> writes:

> Od jakiegoś czasu korzystam właśnie z linuxa, gdyż pod windowsem
> pojawiały się różne problemy, które było trudno rozwiązać. 
>
> Jeszcze jedna rzecz, kiedy zacząć uczyć się debuggowania? Czy używać
> klasy do debugu w pythonie, czy korzystać zewnętrznych klas do
> debugowania? W jaki sposób się za to zabrać (chodzi o to czy
> równolegle z nauką kodowania np. oop, czy dopiero po jakimś czasie)? 
>
> Wiem, że jest to bardzo istotna rzecz i na początku zapewne będzie 
> trudniej wszystko pojąć, lecz same wskazówki praktyczne będą przydatne 
> w przyszłości.

Nie wiem czy to tylko moja przypadłość, ale z debuggera w przypadku
Pythona korzystam niezwykle rzadko (przeważnie przy pisaniu jakichś
rozszerzeń w C).
Być może wynika to z faktu, że proces tworzenia programu w Pythonie
wygląda nieco inaczej niż w językach bez interaktywnego intepretera.
Pisząc kod w Pythonie uruchamiam funkcję po funkcji i obserwuję na
bieżąco co się dzieje.
Drugą linią obrony jest jakiś statyczny analizator kodu
(w moim przypadku `pyflakes` [1]_), który w locie wyłapuje proste błędy,
typu literówki, brak importu itp. Inne tego typu narzędzia to np.: PyChecker
i PyLint.
Trzecia zapora to oczywiście testy, np. doctesty [2]_, czy unittesty [3]_.

Dodatkowo często używam modułu `logging` [4]_ do wypisywania istotnych
informacji, które mogą pomóc przy rozwiązywaniu ewentualnych problemów.

Także sytuacja, w której wszystkie powyższe zabiegi nie wystarczą 
i muszę odpalić debugger zdarza się bardzo rzadko.
Jak już do tego dojdzie to akurat debugger w pydev jest OK.

Reasumując polecałbym zainwestowanie czasu i energii w naukę korzystania
z narzędzi typu PyFlakes i pisanie dobrych testów *wraz* z rozwojem kodu.
Także wyrobienie sobie nawyku rozwijania programu w ścisłej współpracy 
z interpreterem, czyli zapominamy o znanym skądinąd sposobie: 12h
hakowania, po czym odpalenie i żmudne debuggowanie.

RW

.. [1] https://launchpad.net/pyflakes
.. [2] http://docs.python.org/library/doctest.html
.. [3] http://docs.python.org/library/unittest.html
.. [4] http://docs.python.org/library/logging.html
Technical Details
Message-ID: <87sjswbzwy.fsf@smsnet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin.stu.neva.ru!aioe.org!.POSTED!not-for-mail
References: <304b71eb-abaa-4e31-8e51-2801e4814070@glegroupsg2000goo.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin.stu.neva.ru!aioe.org!.POSTED!not-for-mail
From: Rob Wolfe <rw@smsnet.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: Przydatne narzędzia.
Date: Mon, 02 May 2011 22:39:09 +0200
Organization: Aioe.org NNTP Server
Lines: 46
Message-ID: <87sjswbzwy.fsf@smsnet.pl>
References: <304b71eb-abaa-4e31-8e51-2801e4814070@glegroupsg2000goo.googlegroups.com>
NNTP-Posting-Host: 2rGoQNolRk9jw3eVwM369A.user.speranza.aioe.org
Mime-Version: 1.0
X-Complaints-To: abuse@aioe.org
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)
X-Notice: Filtered by postfilter v. 0.8.2
Cancel-Lock: sha1:a4phH6c6t+DfEXuqxX5tp9ylxN4=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit