Each time you code 'unless... else'

      unless File.exist? CONF_PATH
        Ultrasphinx.say "configuration file not found for #{RAILS_ENV.inspect} environment"
        Ultrasphinx.say "please run 'rake ultrasphinx:configure'"

Isn't this rather a case for an exception?

raise "please run 'rake ultrasphinx:configure'" unless File.exists? CONF_PATH

      else
        begin
          lines = open(CONF_PATH).readlines

          sources = lines.select do |line|

...Satan waterboards a kitten.

Just a note - we have debugged the second bug in this library, in as many days, and it also happened in the immediate vicinity of _another_ unless... else.

I'm picking a longhair tabby for this one.

Uh...

  robert

···

On 29.01.2008 21:26, Phlip wrote:

I am not a big fan of that rule. Multiple exits can come in handy, for example when doing this:

# superfluous in Ruby of course
def find(enum, x)
   enum.each do |elm|
     return elm if x == elm
   end
   nil
end

Avoiding multiple exits can lead to increased indentation because you might need more control constructs.

Especially in programming languages with exceptions the "single exit" rule is pretty useless - unless you do not count exceptions.

Kind regards

  robert

···

On 30.01.2008 20:27, Phlip wrote:

There's a reason professors of BDUF techniques used to say a routine should have a single entry and a single exit. The reason is not the exit count itself. Applying the rule forces you to examine and clean up your control flow, between that entry and exit.