LoginSignup
2
2

More than 5 years have passed since last update.

リファクタリング、ケーススタディ

Last updated at Posted at 2013-10-08

fuckマジックナンバー

やりたい事:質問項目をkeyに、その回答をvalueに入れた @answeresというハッシュがあり、そのキーの一部の(必須回答項目)valueがnilでないかチェックする.

【俺のコード】

kuso-code.rb
necessary_answers = [@answers["reason"], @answers["select_1"], @answers["select_2"],
                          @answers["select_3"], @answers["select_4"], @answers["select_5"],
                          @answers["select_6"], @answers["select_7"]]

if necessary_answers.compact.reject(&:empty?).size == 8
 *以下処理

「マジックナンバーが含まれてるし、新しく回答必須項目を増やしたり変更する時に大変。くそコード」

「そもそも長いし、反復表現がある。くそコード」

【良いコード】

good-code.rb

class上部で定数定義

NECESSARY_ANS = ["reason", "select_1", "select_2", "select_3", "select_4", "select_5", "select_6", "select_7"]

.
.
.
.


tmp = NECESSARY_ANS.map{|key| @answers[key]}.any?(&:blank?)

# またはtmp = @answers.values_at(*NECESSARY_ANS).any?(&:blank?)
if tmp
 *以下処理

「定数定義でマジックナンバーを消して、項目の追加がしやすい」

2
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2