Читайте также: |
|
Иногда код деградирует при сопровождении, а иногда он изначально имеет невысокоекачество. В обоих случаях на это — и на необходимость рефакторинга указывают некоторые предупреждающие знаки.
· Код повторяется
· Метод слишком велик
· Цикл слишком велик или слишком глубоко вложен в другие циклы
· Класс имеет плохую связность
· Метод использует больше элементов другого класса, чем своего собственного
· Класс имеет слишком ограниченную функциональность
· По цепи методов передаются бродячие данные (данные, передаваемые в метод лишьзатем, чтобы он передал их другому методу)
· Один класс слишком много знает о другом классе
· Сложный код объясняется при помощи комментариев. В важности комментариев трудноусомниться, но их не следует использовать для объяснения плохого кода. Старая мудростьгласит: «Не документируйте плохой код — перепишите его».
Когда не следует выполнять рефакторинг:
· Не рассматривайте рефакторинг как оправдание написания плохого кода с намерениемисправить его позднее
· Не рассматривайте рефакторинг как способ, позволяющий избежать переписывания кода
· Иногда имеющийся код настолько запутан, что подвергнуть его рефакторингу, конечно,можно, но проще начать все с самого начала
· Ещё один случай, когда следует воздержаться от рефакторинга, это близость даты
завершения.
Наиболее употребимые методы рефакторинга:
· Изменениесигнатурыметода (Change Method Signature)
· Инкапсуляция поля (EncapsulateField)
· Выделение класса (ExtractClass)
· Выделение интерфейса (ExtractInterface)
· Выделение локальной переменной (ExtractLocalVariable)
· Выделение метода (ExtractMethod)
· Генерализация типа (GeneralizeType)
· Встраивание (Inline)
· Введениефабрики (Introduce Factory)
· Введениепараметра (Introduce Parameter)
· Подъём поля/метода (PullUp)
· Спуск поля/метода (Push Down)
· Замена условного оператора полиморфизмом (Replace Conditional with Polymorphism)
Дата добавления: 2015-08-27; просмотров: 65 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Документирование | | | Архитектура программного обеспечения |