Недавно я закончил свой первоначальный рассказ об алгоритме блэкджека, который принимает массив карт в виде строк и суммирует их, чтобы получить общее значение.

Хотя он «работает» так, как ожидалось, есть одна часть кода, которая мне не нравится.

def get_card_value(card)
  if card.length < 2
    -1
  elsif card.to_i == 0     #Strings starting with a letter return 0
    letter_value = {            
      'A' => 11,
      'J' => 10,
      'Q' => 10,
      'K' => 10
    }
    letter_value[card[0]]
  else
    card.to_i             #Strings starting with a number return the # value of the number
  end
end

Хотя приведенный выше код делает то, что я хотел, это было быстрое исправление, встроенное в то время, чтобы помочь мне двигаться дальше. На данный момент это работает, но для тех, кто впервые смотрит на код, может быть не очень понятно, что делает этот код. Хэш в порядке, но я думаю, что каждое из условий, ведущих к хешу, нуждается в уточнении.

Хотя хорошо, что я закончил, если бы я потратил немного больше времени на размышления о более элегантном решении, я бы не чувствовал, что мне нужно вернуться назад, чтобы изменить его.

С другой стороны, Кент Бек говорит: Заставьте это работать, сделайте правильно, сделайте это быстро». Хотя это хорошая стратегия, мне не нравится мой код в его нынешнем состоянии заставьте его работать. Трудно понять, где провести черту.