Всем привет. Небольшая шпаргалка для новичков и всех, кто забыл, по книге Рефакторинг.
Улучшение существующего кода Мартин Фаулер .
За что? Когда и как?
Не хочу здесь углубляться, потому что.все зависит от многих факторов: знаний, необходимости, сроков, конкретного проекта и т. д. и т. п.
Главное, чего не следует забывать и придерживаться: все хорошее полезно в меру.
Код с запахом
От чего нужно избавиться в процессе рефакторинга и при написании новых программ.
- Дублирование кода.
- Длинный метод.
- Отличный класс.
- Длинный список параметров.
- Дивергентные модификации.
Если при добавлении нового функционала вам придется модифицировать несколько методов и значительную часть кода в классе.
- Стрельба по выстрелу.
Если при добавлении нового функционала вам приходится вносить одни и те же изменения в большое количество классов.
- Завистливые функции.
Методу больше не интересен класс, в котором он находится, а другой.
- Группы данных.
Похожие группы данных в разных частях кода.
- Одержимость элементарными типами.
- Операторы переключения типов.
Не будем забывать об ООП.
- Иерархии параллельного наследования.
Дублирующийся код.
- Ленивый класс.
Не используется или содержит мало методов (оставшихся после рефакторинга/проектирования).
- Теоретическое сообщество.
Вредно и переизбыток абстракций.
- Временное поле.
Если в классе есть переменные, которые используются в одном методе из пяти, то лучше передать эту переменную этому самому методу через параметр, а не через конструктор или какой-то другой метод.
- Цепочка сообщений.
Глубокая последовательность обращений к необходимой информации через объекты по иерархии классов.
- Посредник.
Класс делегирует большую часть своих методов другому классу.
- Неуместная близость.
Занятия не должны обнажать интимные части, например, внутреннюю кухню.
При наследовании подклассы должны знать минимально необходимую информацию о родителе.
- Альтернативные классы с разными интерфейсами.
Дублирование логики.
- Неполнота библиотечного класса.
Не бойтесь расширять функциональность классов библиотеки: расширять методы или украшать объект класса библиотеки.
- Классы данных.
Разделите на логические единицы.
Доступ к данным изменений должен быть значимым.
- Отказ от наследства.
Если наследнику нужна лишь небольшая часть информации (данных, методов) о родителе.
- Комментарии.
Свидетельства запаха кода, который необходимо реорганизовать.
Возможно код остаётся для будущего рефакторинга или описывает сложные манипуляции
А с учетом опыта, что-то свое.
Читайте технику: Методы создания .
Какая прибыль.
Простота поддержки и понимания кода, а также написания тестов.
Послесловие
Добавлю, что это всего лишь минимум.В зависимости от сложности проекта и архитектуры в нем на Арену выйдут более тяжеловесные принципы, шаблоны и методологии.
Теги: #рефакторинг #Фаулер #шпаргалка #Идеальный код #дизайн и рефакторинг
-
Пол Грэм: Мои Кумиры
19 Oct, 24 -
Додзё, Jsonp И Всё, Всё, Всё.
19 Oct, 24 -
Магенто
19 Oct, 24