I had some chaining that was getting too complex due to many nil checks, so I 
started to refactor using a Null Object.

However, I’m struggling a bit with the refactor due to inlining. Since #ifNil: 
variants might be inlined, it seems that something like:

    anObject with a long chain of messages ifNotNil: \[ :result | “…” \]

must be changed into something like:

    anObject with a long chain of messages isNil ifFalse: \[ anObject with a 
long chain of messages “…” \].

Obviously, I can use a temp to have: 

    result := anObject with a long chain of messages.

    result isNil ifFalse: \[ result “…” \].

But both seem ugly and make me question using this pattern. 

1. What am I missing?

2. After 40+ years of Moore’s Law, can we turn off these inlines by default?

Reply via email to