Прохождение решения 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»