Недавно я закончил свой первоначальный рассказ об алгоритме блэкджека, который принимает массив карт в виде строк и суммирует их, чтобы получить общее значение.
Хотя он «работает» так, как ожидалось, есть одна часть кода, которая мне не нравится.
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
Хотя приведенный выше код делает то, что я хотел, это было быстрое исправление, встроенное в то время, чтобы помочь мне двигаться дальше. На данный момент это работает, но для тех, кто впервые смотрит на код, может быть не очень понятно, что делает этот код. Хэш в порядке, но я думаю, что каждое из условий, ведущих к хешу, нуждается в уточнении.
Хотя хорошо, что я закончил, если бы я потратил немного больше времени на размышления о более элегантном решении, я бы не чувствовал, что мне нужно вернуться назад, чтобы изменить его.
С другой стороны, Кент Бек говорит: Заставьте это работать, сделайте правильно, сделайте это быстро». Хотя это хорошая стратегия, мне не нравится мой код в его нынешнем состоянии заставьте его работать. Трудно понять, где провести черту.