-2

コード設計の観点から、コードのこの部分を改善する方法を考えていました。

(私は、異なるデフォルト属性で同じ関数を呼び出すことに特に興味があります - 多くのコードの重複)

def follow_pages(number_of_pages = 5, sleep_interval = 5)
  process_pages true, number_of_pages, sleep_interval
end

def unfollow_pages(number_of_pages = 5, sleep_interval = 5)
  process_pages false, number_of_pages, sleep_interval
end

def process_pages(follow = true, number_of_pages = 5, sleep_interval = 5)
  number_of_pages.times do |page|

    sleep rand(sleep_interval)

    if follow
      follow_all_pages
    else
      unfollow_all_pages
    end

  end

end
4

1 に答える 1

2

あなたはそのようなことをすることができます:

def follow_pages(*args)
  process_pages true, *args
end

def unfollow_pages(*args)
  process_pages false, *args
end

def process_pages(follow = true, number_of_pages = 5, sleep_interval = 5)
  ...
end

基本的には、任意の引数を受け入れ、引数の値を先頭に追加して、メインメソッドfollowに渡します。proess_pageコードが読みやすくなるかどうかはわかりませんが、引数のデフォルト値を繰り返す必要がなくなることは間違いありません。

于 2012-04-26T10:40:35.407 に答える