Прохождение решения Sandi Metz для ката Gilded Rose Kata
Недавно узнал о Санди Мец. В 2014 году она вела конференц-доклад. Речь шла о дублировании и о том, как избежать плохих абстракций.
Мне очень понравилось ее решение ката Gilded Rose. И решил переписать на Java для лучшего понимания.
Читайте дальше, если вам интересно.
Проблема
Вот настоящая проблема, с которой мы столкнулись. Прочтите требования, и тогда мы сможем начать.
Ниже я вставил исходный код ката. Для упрощения справки. Код наполнен волшебными строками и числами. Трудно следить за множеством отступов и кода.
Решение
Реализация Java на основе решения Сэнди на Ruby.
Последнее требование
Для выполнения ката вам необходимо реализовать классConjured
и добавить его в SPECIALIZED_CLASSES
. Обновите тесты. Ката позолоченная роза сделано.
Намеренно опускаем последний шаг реализации.
Присоединяйтесь к Medium сегодня!
Почему вам следует подписаться? Сначала отказаться от режима инкогнито в Chrome. Во-вторых, вы услышите множество замечательных историй. Вы можете прочитать около 100 книг с Книжной полки прагматичного программиста. Вы можете увидеть препятствия, чрезвычайно полезные советы и отличные советы от команды Pinterest. Вы можете прочитать о последних разработках Google Cloud.
Это то, что вы получаете за 5 долларов (2 чашки кофе) в месяц. Вы получаете всю библиотеку прагматичного программиста для чтения за 5 долларов.
Отказ от ответственности: 2 доллара из 5 будут напрямую поддерживать меня и предоставлять вам отличные темы.
Заключение
Я видел много реализаций этой проблемы. Этот застрял. Он решает это таким образом, что понимает каждый разработчик.
Решение соответствует принципу «открыто / закрыто». Вы можете добавить больше типов элементов, не изменяя существующий код.
Конфигурацию можно перемещать. При необходимости вы можете переместить его в файл конфигурации. Или, как говорит Сэнди, если он вырастет, перенесите его в базу данных.
Сэнди упоминает множество метрик. Один - порка. Метрика показывает, насколько болезненно код тестировать.
Sandi улучшилась на 75% благодаря объектно-ориентированному подходу. По большому счету условный подход.
Ресурсы:
Продолжить мои статьи по теме:
5 важных выводов из« 97 вещей, которые должен знать каждый программист
5 основных выводов из книги Кевлина Хенни levelup.gitconnected.com»