Рефакторинг как системный подход
Рефакторинг — это процесс улучшения кода, при котором он становится более чистым, структурированным и понятным. При этом оптимизация кода не влияет на внешнее поведение программы. Результатом рефакторинга становится код, который легко читать и поддерживать всем членам команды. Это сокращает время на разработку продукта и повышает его качество. Рефакторинг проводится уже после написания кода, поэтому процесс должен быть контролируемым и тщат
Премиум
Отлично об это проблеме сказано в заключительной части отличной небольшой книги (рекомендую) про подходы к именованию вот тут https://namingthings.donedone.com/#ch-naming-and-teaching
И, по-моему, вот эта перелинковка между проблемами и методами а-ля реляционные базы данных создаёт скорее дополнительную ментальную нагрузку. Как когда ты читаешь код и видишь метод с каким-то общим расплывчатым названием и тебе приходиться заглянуть в реализацию метода, чтоб понять, что же все таки происходит.
Некоторые решения вообще, по-моему, спорные. Вместо переменной которая используется в нескольких местах предлагается заменить несколькими вызовами одного и того же метода. Это хорошая практика? Да, есть случаи в которых есть смысл вынести какие-то выражения/вычисления в отдельный метод. Но можно подобрать какие-то более удачные примеры без сомнительных побочных эффектов. Автору было просто лень думать или искать в своём опыте такие примеры.
Ну и наименее важное это иллюстрации. Они типа симпатичные, но как метафоры, по-моему, тоже никакие. И очевидно это проёб не иллюстратора.