> On 28 Nov 2018, at 06:15, Richard O'Keefe <rao...@gmail.com> wrote:
> 
> The idea of a flat ban on #ifTrue:ifFalse: is ridiculous.
> Number>>abs
>    ^self negative ifTrue: [self negated] ifFalse: [self]
> 
> Is there any better way to do this?  Not really, you can
> only move the #ifTrue:ifFalse: somewhere else.
> 
> The main argument against #ifTrue:ifFalse: is NOT TO USE
> IT FOR TYPE TESTS.  If you want to do different things
> depending on the class of x, ask x to do it.  (The irony
> is that in Smalltalk, #ifTrue:ifFalse: *is* in principle
> an object-oriented dispatch.)  If you want to do
> different things depending on the state of x, and this
> requires revealing internal details that would not
> otherwise be revealed, ask x to do it.
> 
> Two key ideas in software engineering are coupling
> (lots of interdependencies makes things hard to re-use)
> and cohesion (modules/types/classes should be "about"
> one thing).  You have to balance the "use OO dispatch"
> idea against this: you have a method in class A that
> depends on an object of class B, and you don't want
> A to have to know too much about B, but on the other
> hand, you don't want B to have to depend too much on
> what A is up to.  If it makes sense to have a B without
> any A around, then changes to A should not really
> require changes to B.
> 
> So eliminating #ifTrue:ifFalse: from your code can make
> it WORSE.  You have to THINK about each task and decide
> where it REALLY belongs.  Is this bit of code entirely
> about B?  Then it belongs in B.  Is that bit of code
> about already public information concerning B and also
> tied to A's needs and wants?  Then it belongs in A.  And
> if that means using some sort of "if", go ahead!

Very well written, thanks.

> The Pharo 6 sources contain about 5800 classes and
> over 40000 ifTrue:/ifFalse:/ifNil:/ifNotNil: uses.
> The Dolphin core contains about 2100 clases and
> over 12600 ifs.
> My Smalltalk has about 13 ifs per class.
> Smalltalk/X (JV) has about 6500 classes and
> over 127000 ifs, nearly 20 per class.
> 
>  
> 
> On Wed, 28 Nov 2018 at 05:41, Roelof Wobben <r.wob...@home.nl> wrote:
> Hello,
> 
> Yesterday I had a talk with luc frabresse about using if then.
> He said if I understand it right, Its the best to not using a if then or 
> a ifTrue/ifFalse.
> 
> Can anyone help me figure out how to rewrite this project so I will not 
> use the ifTrue in the basement function.
> 
> my code so far can be found here : https://github.com/RoelofWobben/AOC2015
> 
> Roelof
> 
> 


Reply via email to