🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Największy problem Pythona.

#8691
From: Filip Dreger
Date: Thu, 12 May 2005 10:13
38 lines
3490 bytes
Użytkownik "Daniel Mróz" <beorn@alpha.pl> napisał w wiadomości 
news:d5v7fu$75t$1@news.supermedia.pl...
>> Jeśli chcemy zmiecić wiek pracownika e, to robimy e.age = 14, a nie
>> e.setage(14). To jest naturalne, ponieważ to co chcemy zrobić, to 
>> jest:
>> "zmienić wartość e.age", a nie "wywołać metodę e ustawiającą wiek z
>> parametrem 14". Zamiast deklarować atrybut i pisać dwie metody nie
> No tak, ale co z kontrola poprawnosci danych? setage() moze nam 
> sprawdzic czy przypadkiem ktos zamiast 14 nie przekazuje 
> "czternascie".
to, co dodają IDE, to puste settery i gettery, nie przeprowadzające 
żadnej walidacji. Ich funkcja jest inna i związana z rozwijaniem 
programu.
Jeśli w Javie uznamy, że nie potrzebujemy żadnej walidacji i 
udostępnimy klientowi goły atrybut, to - można powiedzieć - 
przegraliśmy. Nie mamy żadnej metody, żeby walidację wprowadzić 
później. A jeśli na przykład będziemy musieli dodać do aplikacji 
logowanie każdej zmiany wieku? zgroza! Dlatego właśnie powstał prosty 
wzorzec projektowy - atrybuty opakowujemy w settery i gettery, które 
na razie nic nie robią, ale pozwolą nam w przyszłości na rozwój 
aplikacji.
W ten sposób każdy atrybut klasy napisanej w Javie wymaga około 
czterech linijek nic nie robiącego kodu. Nic dziwnego, że właśnie w 
Javowym środowisku wyrosła koncepcja złożonych IDE - puste settery i 
gettery są po prostu watą, której pisaniem rzeczywiście nie powinien 
zajmować się programista.
W Pythonie jest inaczej. Jeżeli potrzebujemy atrybutu age, to dodajemy 
atrybut age, a nie metodę. To wszystko. Jeśli kiedyś będziemy chcieli 
dodać logowanie zmian wieku i walidację, zmienimy definicję age na
age=property(getage,setage)
i dopiszemy getage i setage Ale to dopiero w razie potrzeby.
Oznacza to, że unikamyw naszych źródłach waty, czyli nic nie 
znaczącego kodu (którym w Javie zarządza IDE). Dzięki temu program 
jest szybszy, łatwiejszy do rozwijania i zrozumiały bez protezy na 
oczy, jaką bywają nowoczesne edytory.

pozdrawiam,
Filip 
Technical Details
Message-ID: <d5vahh$l1c$1@nemesis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <jsq2enrcpp4r$.nmpn8bgh83ge.dlg@40tude.net> <d5r1l6$flm$1@nemesis.news.tpi.pl> <1njwce3cqj46q.11f4hsu79ksgd.dlg@40tude.net> <1gvuz1q6mpswb.2m8e9kggxehl.dlg@40tude.net> <d5r6le$msg$1@nemesis.news.tpi.pl> <1wa07hpw18hk1.effbya3x2hyr$.dlg@40tude.net> <d5sd5s$ctc$1@gw.magellan.net.pl> <d5v015$3ta$1@nemesis.news.tpi.pl> <d5v2tv$4l7$1@news.supermedia.pl> <d5v5so$2bv$1@achot.icm.edu.pl> <d5v7fu$75t$1@news.supermedia.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "Filip Dreger" <fdreger@amiga.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: Największy problem Pythona.
Date: Thu, 12 May 2005 12:13:35 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 40
Message-ID: <d5vahh$l1c$1@nemesis.news.tpi.pl>
References: <jsq2enrcpp4r$.nmpn8bgh83ge.dlg@40tude.net> <d5r1l6$flm$1@nemesis.news.tpi.pl> <1njwce3cqj46q.11f4hsu79ksgd.dlg@40tude.net> <1gvuz1q6mpswb.2m8e9kggxehl.dlg@40tude.net> <d5r6le$msg$1@nemesis.news.tpi.pl> <1wa07hpw18hk1.effbya3x2hyr$.dlg@40tude.net> <d5sd5s$ctc$1@gw.magellan.net.pl> <d5v015$3ta$1@nemesis.news.tpi.pl> <d5v2tv$4l7$1@news.supermedia.pl> <d5v5so$2bv$1@achot.icm.edu.pl> <d5v7fu$75t$1@news.supermedia.pl>
NNTP-Posting-Host: pac142.warszawa.sdi.tpnet.pl
X-Trace: nemesis.news.tpi.pl 1115893106 21548 217.96.222.142 (12 May 2005 10:18:26 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Thu, 12 May 2005 10:18:26 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
X-RFC2646: Format=Flowed; Response
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit