Hi, There is also this book : Some of you probably already knew about it, still it is good to recall :) Abdelghani
Date: Thu, 02 Jul 2015 07:37:11 +0200 From: Joachim Tuchel <[hidden email]> To: stepharo <[hidden email]> Cc: Any question about pharo is welcome <[hidden email]> Subject: Re: [Pharo-users] an elegant way to return a result Message-ID: <[hidden email]> Content-Type: text/plain; charset=utf-8 Just found this on twitter: http://www.cs.wm.edu/~denys/pubs/ICSE%2715-BadSmells-CRC.pdf Am 01.07.2015 23:35 schrieb stepharo <[hidden email]>: > > I know :D > > Le 1/7/15 15:19, [hidden email] a ?crit : > > Stef, > > > > you're shooting the wrong man! ;-) The crime was committed in your > > team ;-)))) > > > > See you in Brescia > > > > Joachim > > > > Am 30.06.15 um 19:19 schrieb stepharo: > >> > >> > >> Le 30/6/15 14:39, [hidden email] a ?crit : > >>> Ah, Okay, you are mentioning the one and only one case in which this > >>> could make sense.... ;-) > >>> > >>> Something like > >>> > >>> stream next ifNil: [^stream next]. > >> > >> so ugly. > >> Please we should not teach how to do exception with blocks :) > >>> > >>> So there may be cases where the two sends do not return the same > >>> result. But that is, of course, not what the OP suggested. > >>> Nevertheless, I was too fast in criticizing ;-) > >>> > >>> I would consider code like that "less easy" to maintain, however. > >>> > >>> Nice thinking Kata ;-) > >>> > >>> Joachim > >>> > >>> > >>> > >>> Am 30.06.15 um 14:22 schrieb Esteban Lorenzano: > >>>> ah yeah :) > >>>> > >>>> I assumed > >>>> > >>>> first "something aMsg" ~= second "something aMsg? > >>>> > >>>> In case is the same, the correct way is as you say: > >>>> > >>>> ^ something aMsg ifNil: [ anotherResult ] > >>>> > >>>> (sorry, he :P) > >>>> > >>>>> On 30 Jun 2015, at 13:43, [hidden email] wrote: > >>>>> > >>>>> Am 30.06.15 um 13:40 schrieb Peter Uhn?k: > >>>>>> Make sense if there's code in between. > >>>>> not sure what you're saying. I mean, sending the message twice > >>>>> makes sense if you already know the outcome? Hmmm... > >>>>> > >>>>>> something aMsg ifNil:[ ^ something aMsg ]. "yay for guards!" > >>>>>> "much more code" > >>>>>> ^ aNotherResult > >>>>>> > >>>>>> Peter > >>>>> > >>>>> -- > >>>>> ----------------------------------------------------------------------- > >>>>> > >>>>> Objektfabrik Joachim Tuchel mailto:[hidden email] > >>>>> Fliederweg 1 http://www.objektfabrik.de > >>>>> D-71640 Ludwigsburg http://joachimtuchel.wordpress.com > >>>>> Telefon: +49 7141 56 10 86 0???????? Fax: +49 7141 56 10 86 1 > >>>>> > >>>>> > >>>> > >>>> > >>> > >>> > >> > >> > >> > > > > > > > |
In reply to this post by jtuchel
by the way
I would argue that almost every person who would read this would think it's a bug and it should be ifNotNil: Also there would be no point in saving it to a variable if you will just return. ^ stream next ifNil: [ stream next ] |
Well, thanks for the documentation, the first article was quite interesting and I'm gonna get this book asap :) When you execute a block (far away from the place it was created), it acts as an exception, it stops the execution of currently executed methods and So for me Thanks for the explanation, I need to read this chapter, right :p By the way, I've always used return statements in blocks to "break" out of loops since i didn't find any "break" method in Pharo. Is that bad too ? 2015-07-03 10:11 GMT+02:00 Peter Uhnák <[hidden email]>:
|
It's still the same thing. Could you provide an example where you do such a thing? When I started with Smalltalk I had also this habit of forcing loops everywhere and breaking them, and only later I realized that it is very often much better expressed as collections with do:/select:/collect:/... Peter |
In reply to this post by jtuchel
Le 3/7/15 09:09,
[hidden email] a écrit :
yes :)
|
In reply to this post by Matthieu
Le 3/7/15 11:53, Matthieu Lacaton a
écrit :
no this correct. ifTrue: [^ self and other] is a natural pattern I tend to do ^ ,.,.,. ifTrue: ifFalse: instead of ,mm.,. ifTrue: ^ ifFalse: ^ because I prefer and in VW this is was creating easier to optimise blocks Now the wrong pattern is hhhh foo: [^ self] where foo: is not a defined control flow because here you really mean. I want to get back here. and this is different from hhhh foo: [ self ]
|
In reply to this post by Peter Uhnak
Le 3/7/15 12:17, Peter Uhnák a écrit :
yes but internally this is what they do
|
Free forum by Nabble | Edit this page |