Лекция: RECONCILE DIFFERENCES (СОГЛАСОВАНИЕ РАЗЛИЧИЙ)

Каким образом пм можете унифицировать два схожих фрагмента кода? Посте­пенно делайте их все более похожими друг на друга. Унифицируйте их только в случае, если они абсолютно идентичны.

Подчас выполнение рефакторнига — это весьма нервная работа. Простые ре- факторинг)! очевидны. Если я извлекаю метод и делаю это механически корректно, вероятность того, что поведение системы изменится, чрезвычайно мала. Однако некоторые из рсфакторимгов заставляют вас внимательно анализировать после­довательность выполнения операций и порядок модификации данных. Построив длинную цепочку умозаключений, вы приходите к выводу, что запланированное вами изменение кода, скорое всего, не приведет к изменению поведения системы. Однако любой подобный рефакторинг уменьшает количество волос на вашей го­лове

Сложные рефакторинги — это именно то. чего мы пытаемся избежать, когда придерживаемся стратегии маленьких шажков и конкретной обратной связи. Полностью избежать сложных рефакгорингов невозможно, однако можно умень­шить сферу их влияния на остальной ход.

Подобные рефакторинги возникают на разных уровнях:

· Два цикла выглядят похоже. Если вы сделаете их идентичными, вы можете объединить их в единый цикл.

· Две ветви условного оператора выглядят похоже. Сделав их идентичными, вы можете избавиться от условного оператора.

· Два метода выглядят похоже. Сделав их идентичными, вы можете изба­виться от одного из них.

· Два класса выглядят похоже. Сделав их идентичными, вы можете изба­виться от одного из них.

Иногда задачу согласования различий удобнее решать в обратном порядке. Иными словами, вы представляете себе самый тривиальный последний этап этой процедуры, а затем двигаетесь в обратном направлении. Например, если вы хотите избавиться от нескольких подклассов, наиболее тривиальный последний шаг можно будет выполнить в случае, если подкласс ничего не содержи i В этом слу­чае везде, где используется подкласс, можно будет использовать суперкласс, при этом поведение системы не изменится. Что надо сделать, чтобы очистить под­класс от методов и данных? Для начала метод можно сделать полностью иден­тичным одному из методов суперкласса. Постепенно переместив все методы и все данные в суперкласс, вы сможете.заменить ссылки на подкласс ссылками на су­перкласс. После этого подкласс можно уничтожить.

еще рефераты
Еще работы по информатике