I agree with James. The first can be tempting when you're doing side effect 
heavy code (which should probably cause you to take a double take on how 
you got to this point anyhow) but the most glaring issue that is all too 
easy to overlook is that they aren't actually equivalent expressions. Even 
with side effecting expressions, using an if here reinforces the notion 
that you are conditionally returning one of two values, not conditionally 
executing two different blocks of statements. 

On Monday, October 6, 2014 9:49:33 PM UTC-4, James Reeves wrote:
>
> The latter is what I'd consider to be the correct approach.
>
> If the do blocks become unwieldy, you can factor them out into functions.
>
> - James
>
> On 7 October 2014 02:16, Mike Fikes <mikef...@gmail.com <javascript:>> 
> wrote:
>
>> Here's a style question: If you have to conditionally do one set of side 
>> effects or another set, is your preference to use when and when-not, or 
>> an if containing do blocks? Or perhaps some other construct?
>>
>> In terms of a concrete example:
>>
>> (let [boolean-value (some-predicate?)]
>>   (when boolean-value
>>     (do-alpha)
>>     (do-beta))
>>   (when-not boolean-value
>>     (do-gamma)
>>     (do-delta)))
>>
>> or:
>>
>> (if (some-predicate?)
>>   (do
>>     (do-alpha)
>>     (do-beta))
>>   (do
>>     (do-gamma)
>>     (do-delta)))
>>
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com 
>> <javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to