Экстремальное программирование. Разработка через тестирование


Изоляция изменений (Isolate Change)



Download 1,35 Mb.
Pdf ko'rish
bet114/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   110   111   112   113   114   115   116   117   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Изоляция изменений (Isolate Change)
Как можно мод ифицировать од ну часть метод а или объекта,
со стоящего из нескольких частей? Сначала изолируйте изменяемую
часть.
Мне приход ит в голову аналогия с хирургической операцией:


фактически все тело оперируемого пациента покрыто специальной
про стыней 
за 
исключением 
места, 
на 
котором, 
собственно,
о существляется операция. Благод аря такому покрытию хирург имеет
д ело с фиксированным набором переменных. Перед выполнением
операции врачи сколь угод но д олго могут обсужд ать, какое влияние на
зд оровье пациента оказывает тот или иной орган, од нако во время
операции внимание хирурга д олжно быть сфокусировано.
Вы можете обнаружить, что по сле того, как вы изолировали
изменение, а затем внесли это изменение в код , результат получился
настолько тривиальным, что вы можете отменить изоляцию. Например,
если мы обнаружили, что внутри метод а findRate() д олжно
присутствовать всего од но д ействие – возврат значения поля, мы можем
вместо обращений к метод у findRate() напрямую обратиться к полю. В
результате метод findRate() можно буд ет уд алить. Од нако под обные
изменения не след ует выполнять автоматически. По старайтесь найти
баланс 
межд у 
затратами, 
связанными 
с 
использованием
д ополнительного метод а, и пользой, которую прино сит д ополнительная
концепция, д обавленная в код .
Для изоляции изменений можно использовать несколько разных
спо собов. Наиболее часто используется шаблон «Выд еление метод а»
(Extract Method), помимо него также используются «Выд еление объекта»
(Extract Object) и «Метод в объект» (Method Object).
Миграция данных (Migrate Data)
Как можно перейти от од ного пред ставления к д ругому? Временно
д ублируйте д анные.
Как
Вначале рассмотрим версию «от внутреннего к внешнему». В
рамках этого под ход а вы изменяете вначале внутреннее пред ставление, а
затем внешний интерфейс.
1. Созд айте переменную экземпляра в новом формате.
2. Инициализируйте переменную нового формата везд е, гд е
инициализируется переменная старого формата.
3. Используйте переменную нового формата везд е, гд е используется
переменная старого формата.
4. Уд алите старый формат.


5. Измените внешний интерфейс так, чтобы использовать новый
формат.
Од нако в некоторых ситуациях уд обнее сначала изменить API. В
этом случае рефакторинг выполняется след ующим образом.
1. Добавьте параметр в новом формате.
2. Обеспечьте преобразование параметра в новом формате во
внутреннее пред ставление, облад ающее старым форматом.
3. Уд алите параметр в старом формате.
4. Замените использование старого формата на использование
нового формата.
5. Уд алите старый формат.
Зачем
Проблема миграции д анных возникает кажд ый раз, когд а
используется шаблон «От од ного ко многим» (One to Many).
Пред положим, что мы хотим реализовать объект TestSuite, используя
шаблон «От од ного ко многим» (One to Many). Мы можем начать так:
def testSuite(self):
suite = TestSuite()
suite.add(WasRun("testMethod"))
suite.run(self.result)
assert("1 run, 0 failed" == self.result.summary())
Чтобы реализовать этот тест, начнем с од ного элемента test:
class TestSuite:
def add(self, test):
self.test = test
def run(self, result):
self.test.run(result)
Теперь мы приступаем к д ублированию д анных. Вначале
инициализируем коллекцию тестов:

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   110   111   112   113   114   115   116   117   ...   140




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish