Вот случайно нашел презенташку со своего техтолка "Чистый код". Планировалась серия таких презентаций. Это первая. Рассмотрел пару Фаулеровских запахов:
- дублирование
- код с комментариями
- большой метод
- завистливая функция
Офигеть!!! Только сегодня при покрытии тестами большого модуля столкнулся с тем что мне мешал завистливый метод, так как он вызывал кучу сеттеров в том объекте, который мне нужен и создавал сложные зависимости! Буду мууувать! Спасибки
Да, В рефакторинге все просто. Вначале устраняешь дублирование и укорачиваешь методы посредством Extract Method, после в классе появляется купа мелких методиков, большая часть из которых завидуют каким-то другим типам данных. Если тип данных примитивный - это пахнет "одержимостью элементарными типами" и пора за'introduce'ить новый класс. Если это уже существующий класс - решается через "перемещением метода", если класс расширять нельзя, то можно попробовать сделать наследника или воспользоваться агрегацией расширяемого класса.
Но все начинается с Extract Method с целью устранить два самых злых запаха - дублирование и длинный метод.
В этом блоге я делюсь своим опытом. Не стоит пробовать ничего из того, что тут описано - это может быть вредно для вас или окружающих вас людей. Ответственность за применение любой из идей, описанных в блоге - всецело лежит на читателе.
Перед тем, как продолжать читать этот блог внимательно прочтите это сообщение.
Email рассылка
Нравится статья?
Как найти статью в блоге?
Я юзаю для этого google, в который я ввожу два слова "а пофиг" и что-то из того, что ищу - так быстрее. Пример
Офигеть!!! Только сегодня при покрытии тестами большого модуля столкнулся с тем что мне мешал завистливый метод, так как он вызывал кучу сеттеров в том объекте, который мне нужен и создавал сложные зависимости! Буду мууувать! Спасибки
ОтветитьУдалитьДа, В рефакторинге все просто. Вначале устраняешь дублирование и укорачиваешь методы посредством Extract Method, после в классе появляется купа мелких методиков, большая часть из которых завидуют каким-то другим типам данных. Если тип данных примитивный - это пахнет "одержимостью элементарными типами" и пора за'introduce'ить новый класс. Если это уже существующий класс - решается через "перемещением метода", если класс расширять нельзя, то можно попробовать сделать наследника или воспользоваться агрегацией расширяемого класса.
ОтветитьУдалитьНо все начинается с Extract Method с целью устранить два самых злых запаха - дублирование и длинный метод.