CoffeeScriptでメソッド定義の条件分岐


例えば本番環境とそれ以外の場合で全く違う処理をしたいメソッドを定義する場合どのようにするのが望ましいのだろうか。
もっとも素直な実装はpattern 4であるが、毎回無駄なifが動いてしまうので不快である。

if process.env.NODE_ENV in ['production']
  fn1: -> 
      # Do somthing
      return
else
  fn1: ->
      # Do somthing
      return

class Foo
  # pattern 1
  fn1: fn1

  # pattern 2
  if process.env.NODE_ENV in ['production']
    fn2: -> 
      # Do somthing
      return
  else
    fn2: ->
      # Do somthing
      return

  # pattern 3
  fn3:
    if process.env.NODE_ENV in ['production']
      ->
        # Do somthing
        return
    else
      ->
        # Do somthing
        return

  # pattern 4
  fn4: ->
    if process.env.NODE_ENV in ['production']
      # Do somthing
      return
    else
      # Do somthing
      return