Python: czytelność i nowoczesność przede wszystkim
Na Pythona można patrzeć z wielu różnych punktów widzenia. Rozpatrywać jego cechy pod kątem wydajności, zastosowania w tworzeniu skryptów, dokładności obliczeń numerycznych czy choćby dostępności bibliotek. Dziś spojrzymy na niego przede wszystkim jako na język programowania, który jest czytelny i nowoczesny.
Czytelność
To zadziwiające, jak wiele czynników wpływających na czytelność kodu wprowadzili do języka Python jego twórcy. Występują one na ogromnej liczbie płaszczyzn: teoretycznych standardów kodowania, zasad pisania komentarzy, robienia odstępów w kodzie czy składni języka (została nawet spisana filozofia przyświecająca Pythonowi). Przyjrzenie się im może budzić podziw. Wszystko – od stylu pisania kodu po choćby myślenie o Pythonie – ukierunkowane jest na czytelność. Zobaczmy z bliska, o co dokładnie chodzi.
Proste nazwy w języku angielskim
Jestem pod wrażeniem staranności, z którą zostały dobrane nazwy zmiennych, funkcji oraz słów kluczowych języka Python. Kod programu czyta się naprawdę jak książkę. Nie jest przy tym rozwlekły, nazwy nie są z reguły długie – ale równocześnie bardzo celnie i trafnie opisują działanie danej funkcji lub przeznaczenie i zawartość zmiennej.
Niewątpliwie brawa należą się twórcom języka, ale jest to nie mniej ważna informacja również dla nas – w celu tworzenia czytelnego kodu, który będzie dla nas zrozumiały za miesiąc, za pół roku, za rok – powinniśmy bardzo starannie dobierać nazwy zmiennych. Patrząc na dobrze napisany kod, będziemy mogli powiedzieć niczym Cypher z pierwszej części filmu Matrix: "[...] I don't even see the code. All I see is blonde, brunette, redhead. Hey, you a... want a drink?".
Obowiązkowe wcięcia
Wcięcia – osławione przez jednych i znienawidzone przez innych (przyrównujące tę konwencję do pomysłu z czasów języka FORTRAN). To z jednej strony najbardziej podstawowa a równocześnie genialna w swojej prostocie metoda na zwiększenie czytelności kodu. Python idzie dalej.
Po pierwsze, język ten wymusza stosowanie wcięć. To krok milowy w kierunku uczynienia kodu programu bardziej czytelnym. Co więcej, dzięki oznaczaniu kolejnych bloków instrukcji wcięciami można zredukować w składni liczbę ozdobników, takich jak klamerki, nawiasy czy średniki. Dzięki temu widzimy samą implementację kodu: nazwy funkcji i zmiennych, obiektów czy klas, a nie niewiele dla nas znaczące i raczej zaciemniające całokształt klamerki i nawiasy.
Standard kodowania: PEP-8
Na straży czytelności kodu stoi przede wszystkim PEP-8, czyli typowy standard kodowania. Został on stworzony dla osób programujących kod dla biblioteki podstawowej Pythona, ale jest również stosowany w wielu innych projektach na całym świecie. Oczywiście, większości tych zasad, można używać także w innych języka programowania.
Wcześniej spotkałem się tylko z Drupal Coding Standards oraz coding standards moich wykładowców. Jednak szczegółowość oraz zasięg reguł, które zostały zdefiniowane w przypadku Pythona, przerosła moje oczekiwania.
Gdyby ktoś potrzebował przyjrzeć się proponowanym przez Guido zasadom, dobry skrót można znaleźć na blogu Grzegorza Szymańskiego w serii wpisów zatytułowanych Moja ściąga z PEP-8. Niestety, nawet przytoczenie najważniejszych elementów przekracza ramy tego artykułu.
«poprzednia 1 2 3 4 następna »
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
12
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
Daresh A ja na pulpicie nie mam żadnych ikon i nie potrzebuję takich narzędzi :)
buahahaha @xyz: jak będzie wybór między MS ograniczającym wybór a Apple...
xyz @bartez® : Uważasz, że Apple nie ogranicza programistów? buahahaha
anga star za droga ludzie wy myślicie!?Jestem 4 klasistką rodzice się nigdy nie...
Jan Zwyczajnych filmów tak kręcić się nie da co najwyżej krótkie scenki jak w...
piotrek____ @asdfgh - yup, też tak sądzę.
Tak jak wtedy ten przeciek o żołnierzu...
gonzales Javowcy pozdrawiają dotnetowców xD
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









#1 hipertracker® 2009-06-05 01:47:22 0
IP: 92.251.155.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pl; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4
#2 Jan Koprowski® 2009-06-05 06:43:12 0
IP: 87.207.101.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.28 Safari/530.5
#3 hipertracker® 2009-06-05 14:25:09 0
IP: 193.95.179.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/528.18.1 (KHTML, like Gecko) Version/4.0 Safari/528.17
#4 hipertracker® 2009-06-05 14:42:24 0
IP: 193.95.179.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/528.18.1 (KHTML, like Gecko) Version/4.0 Safari/528.17
#5 Aspiryna 2009-06-07 17:45:06 -1
Pokaż komentarzIP: 213.134.186.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#6 Aspiryna 2009-06-07 17:47:16 -1
Pokaż komentarzIP: 213.134.186.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#7 Jacek Medyk 2009-06-09 16:55:50 -1
Pokaż komentarzIP: 83.10.151.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
#8 hipertracker® 2009-06-09 22:54:49 0
IP: 212.2.170.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; pl-pl) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17
#9 Jacek Medyk 2009-06-10 18:01:38 0
IP: 83.10.176.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
#10 hipertracker® 2009-06-11 20:03:05 0
IP: 78.16.112.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; pl-pl) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17
#11 Fan Zabiełło 2009-06-11 22:38:40 0
IP: 84.234.40.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
#12 me_ 2009-08-06 10:51:27 0
IP: 81.186.224.[...] Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00
#13 Marek Lewandowski 2010-05-06 18:50:02 0
IP: 87.119.53.[...] Mozilla/5.0 (X11; U; Linux i686 (x86_64); pl-PL; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0
#14 Marek Lewandowski 2010-05-06 18:53:08 0
IP: 87.119.53.[...] Mozilla/5.0 (X11; U; Linux i686 (x86_64); pl-PL; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0
#15 demikaze 2010-06-06 02:13:25 0
IP: 62.141.223.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3