Just do IT

思うは招く

kaminari では config にページ表示数を書く

railsでkaminariを使ってページネーションを実装していたときの反省メモ。

マジックナンバーを記述してしまった

ページネーションの表示数を生の数字で指定していたため、メンターから指摘をいただいた。

  def index
    @books = Book.page(params[:page]).per(10)
  end

これでは他の開発者にとって数字の意図がわからず、自分も後で忘れたときに困る。こういった数字を「マジックナンバー」と呼ぶ。

そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。

次のような理由で、マジックナンバーはプログラム中に含まれないことが好ましいとされる。

  • その数値の持つ意味がわかりづらい。
  • 数値を変更する場合に、複数の箇所を変更しなければならない可能性がある。

マジックナンバー (プログラム) - Wikipedia

config に記述する

設定ファイルに書くため、kaminariのconfigを作成する。

bin/rails g kaminari:config

config/initializers/kaminari_config.rbが生成される。

Kaminari.configure do |config|
  config.default_per_page = 10
  # config.max_per_page = nil
  # config.window = 4
  # config.outer_window = 0
  # config.left = 0
  # config.right = 0
  # config.page_method_name = :page
  # config.param_name = :page
  # config.max_pages = nil
  # config.params_on_first_page = false
end

config.default_per_page = 10にとりあえず設定した。