Скачать презентацию Семинар 3 Рефакторинг Что это Рефакторинг изменения Скачать презентацию Семинар 3 Рефакторинг Что это Рефакторинг изменения

Семинар 3.ppt

  • Количество слайдов: 10

Семинар 3 Рефакторинг Семинар 3 Рефакторинг

Что это Рефакторинг изменения во внутренней структуре программного обеспечения, имеющее целью облегчить понимание его Что это Рефакторинг изменения во внутренней структуре программного обеспечения, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения Систематическое привидение кода в порядок Улучшение кода после его написания

НЕ решает задачи, НО ПОЛЕЗЕН ДО ЭТАПОВ Исправления ошибок – легче выявить ошибки в НЕ решает задачи, НО ПОЛЕЗЕН ДО ЭТАПОВ Исправления ошибок – легче выявить ошибки в корректно структурированном коде Доработки новой функциональности – проще доработать адаптированный к изменениям код Оптимизации – проще сделать корректную (понятную) программу быстрой, чем быструю корректной

Что дает Рефакторинг улучшает композицию программного обеспечения Рефакторинг облегчает понимание ПО Помогает найти ошибки Что дает Рефакторинг улучшает композицию программного обеспечения Рефакторинг облегчает понимание ПО Помогает найти ошибки Дает возможность обходиться предварительным проектированием

Когда Code smells (like teen spirit) : Дублирование кода Длинный метод Большой класс Длинный Когда Code smells (like teen spirit) : Дублирование кода Длинный метод Большой класс Длинный список параметров Расходящиеся модификации (несколько осей модификации (нарушение SRP)) Стрельба дробью (Анти SRP) Завистливые функции (функции одного класса/метода больше обращаются к другому классу/модулю, чем к своему) Группы данных Одержимость элементарными типами Операторы типа switch Параллельные иерархии наследования Ленивый класс Теоретическая общность Временное поле Цепочки сообщений Посредник Неуместная близость Альтернативные классы с разными интерфейсами Классы данных Отказ от наследства Комментарии

Когда (по группам) Общие ошибки программирования Плохое использование принципов, практик, паттернов (ООП) Избыточное использование Когда (по группам) Общие ошибки программирования Плохое использование принципов, практик, паттернов (ООП) Избыточное использование принципов, практик, паттернов (ООП)

Предусловие Хорошее покрытие тестами Знание каталога методов рефакторинга, мотивировок и техник их применения ++ Предусловие Хорошее покрытие тестами Знание каталога методов рефакторинга, мотивировок и техник их применения ++ наличия средства проведения автоматических рефакторингов

Синдром рефакторинга и технический долг Рефакторинг ради рефакторинга не имеет смысла Не видеть, где Синдром рефакторинга и технический долг Рефакторинг ради рефакторинга не имеет смысла Не видеть, где рефакторинг полезен также плохо Технический долг – осознанный и отложенный рефакторинг Наличие технического долга – норма. Но его надо погашать в срок.

Примеры методов рефакторинга Выделение метода Быдло: void print. Owing(double amount) { print. Baner(); //вывод Примеры методов рефакторинга Выделение метода Быдло: void print. Owing(double amount) { print. Baner(); //вывод деталей System. out. println (“name: System. out. println (“amount: ” + _name); ” + _ amount); } Стадло: void print. Owing(double amount) { print. Baner(); print. Detailes(amount); } void print. Detailes(double amount) { System. out. println (“name: ” + _name); System. out. println (“amount: ” + _ amount); }

Примеры методов рефакторинга Замена временной переменной вызовом метода Быдло: double base. Price = _quantity Примеры методов рефакторинга Замена временной переменной вызовом метода Быдло: double base. Price = _quantity * _item. Price; if (base. Price > 1000) return base. Price * 0, 95; else return base. Price * 0, 98; Стадло: if (base. Price() > 1000) return base. Price() * 0, 95; else return base. Price() * 0, 98; double base. Price() { return _quantity * _item. Price; }