🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #14737

Re: "setter" zwracający obiekt

#14737
From: Adam Karpierz
Date: Wed, 07 Jun 2006 18:53
114 lines
4077 bytes
"a1" <a1@no.spam> wrote in message Adam Karpierz wrote:

>> 1. Wieksza bledogennosc - i to bledogennosc trudna niekiedy
>>      do wykrycia.
> Błedogennosc? Bo musze mniej kodu napisac?

Dokaldnie tak, bveledogennosc . W dodatku bledy paskudne do wykrycia

class thir
      obj setZ(int X);

...

class other
      other setX(int val);
      other setY(int val);
      other setZ(int val);


      other other::setX(int val)
           ...
           return this

      other other::setY(int val)
           ...
           return thir

      other other::setZ(int val)
           ...
           return this



other o = new other();
o.setX(x).setY(y).setZ(z);

Kompiluje sie, dzial , miodzio!
Tylko robi nie to co trzeba.. :(

>> 2. Nie widac "na rzecz czego"...
>>      W celu upewniania koneiczne siegniecie do definicji klasy
> Mowimy o dobrze skonstruowany fluent interface, wtedy tak naprawde 
> zyskujemy na czytelnosci, oczywiscie mozna napisac to w taki sposob ze nie 
> bedzie wiadomo o co chodzi, ale to tyczy sie dowolnego kodu.

Tak, dowolnego
Kazdy dowolony kod zawiara ze swej natury dowolna ilosc bledow

>> 3. Mozliwe ukryte neichciane tworzenie (i usuwanie) obiektow
>>     tymczasowych (np w przypadku C++).
>>     Moze to powodowac paskudne efekty uboczne
> W c++ to wogole wszystko moze powodowac paskudne efekty uboczne.

W kazdym jezyku.
W Javie tez.

>> Nie widze wiekszej wygody od kasycznego zapisu.
>>
>> o.setX(x);
>> o.setY(y);
>> o.setZ(z);
>
> A tu:
>
> Order o1 = new Order();
>        customer.addOrder(o1);
>         OrderLine line1 = new OrderLine(6, Product.find("TAL"));
>         o1.addLine(line1);
>         OrderLine line2 = new OrderLine(5, Product.find("HPK"));
>         o1.addLine(line2);
>         OrderLine line3 = new OrderLine(3, Product.find("LGV"));
>         o1.addLine(line3);
>         line2.setSkippable(true);
>         o1.setRush(true);

Krotko bo nie mam czasu na jalowosc.
Traktujemy  sie powaznie ?

Order o = new Order();
o.with(6, "TAL");
o.with(5, "HPK")
o..skippable();
o.with(3, "LGV");
o.priorityRush();

a w niektoryc jezykach (chociaz srednio lubie taki podejscie
wylacznie w sensei synktatycznym).

with o
   .with(6, "TAL");
   .with(5, "HPK").skippable();
   .with(3, "LGV");
   .priorityRush();
.
> vs.
>
>         customer.newOrder()
>                 .with(6, "TAL")
>                 .with(5, "HPK").skippable()
>                 .with(3, "LGV")
>                 .priorityRush();
>
> Bo jednak wersja duga wydaje mi sie jakby czytelniejsza. Zreszta cala ta 
> idea 'metod chaining' pochodzi jednak ze znanej z roznych jezykow 
> koncepcji cascade expression.

Ktora szczegolnie uwuielbiaj aparsery synktatyki
Lepije im to zostawic niz "upubliczniac"

W/w to jednak "pryszcz".
Zycze powodzenia w debuggowaniu Twojej wersji.

AK
Technical Details
Message-ID: <e677bn$i33$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.gazeta.pl!not-for-mail
References: <e64lni$6bn$1@news.onet.pl> <e660l7$kgd$1@opal.icpnet.pl> <e665r3$adm$1@news.task.gda.pl> <e66afs$che$1@inews.gazeta.pl> <e66dmr$q62$1@inews.gazeta.pl> <e66joh$p6i$1@inews.gazeta.pl> <e66l9m$2j1$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.gazeta.pl!not-for-mail
From: "Adam Karpierz" <karpierz@NOOOOSPAAAAMpython.pl>
Newsgroups: pl.comp.objects
Subject: Re: "setter" zwracający obiekt
Date: Wed, 7 Jun 2006 20:53:42 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 116
Message-ID: <e677bn$i33$1@inews.gazeta.pl>
References: <e64lni$6bn$1@news.onet.pl> <e660l7$kgd$1@opal.icpnet.pl> <e665r3$adm$1@news.task.gda.pl> <e66afs$che$1@inews.gazeta.pl> <e66dmr$q62$1@inews.gazeta.pl> <e66joh$p6i$1@inews.gazeta.pl> <e66l9m$2j1$1@inews.gazeta.pl>
NNTP-Posting-Host: nat-plk.mentorg.com
X-Trace: inews.gazeta.pl 1149706423 18531 139.181.144.34 (7 Jun 2006 18:53:43 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Wed, 7 Jun 2006 18:53:43 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
X-Priority: 3
X-RFC2646: Format=Flowed; Response
X-Newsreader: Microsoft Outlook Express 6.00.2900.2869
X-User: karpierz
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit