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


Перемещение метода (Move Method)



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

Перемещение метода (Move Method)
Как можно переместить метод в новое место, гд е он д олжен
наход иться? Добавьте его в класс, которому он д олжен принад лежать,
затем обратитесь к нему.
Как
1. Скопируйте метод в буфер обмена.
2. Вставьте метод в целевой класс. Присвойте ему под обающее имя.
Скомпилируйте его.
3. Если внутри метод а происход ит обращение к первоначальному
объекту, д обавьте параметр, при помощи которого метод у буд ет
перед аваться этот объект. Если внутри метод а происход ит обращение к
переменным-членам первоначального объекта, перед авайте их в вид е
параметров. Если внутри метод а переменным-членам первоначального
объекта присваиваются значения, вы д олжны отказаться от ид еи
перено са метод а в новый объект.
4. Замените тело первоначального метод а обращением к новому
метод у.
Зачем
Это од ин из моих самых любимых шаблонов рефакторинга,
выполняемых в процессе консультирования. Дело в том, что он наиболее


эффективно 
д емонстрирует 
неправильные 
пред положения
отно сительно д изайна код а. Вычисление площад и – это обязанно сть
объекта Shape (фигура):
Shape

int width = bounds.right() – bounds.left();
int height = bounds.bottom() – bounds.top();
int area = width * height;

Кажд ый раз, когд а я вижу, что внутри метод а, принад лежащего
од ному объекту, происход ит обращение к нескольким метод ам д ругого
объекта, я начинаю смотреть на код с под озрением. В д анном случае я
вижу, что в метод е, принад лежащем объекту Shape, происход ит
обращение к четырем метод ам объекта bounds (класс Rectangle). Пришло
время переместить эту часть метод а в класс Rectangle:
Rectangle
public int area() {
int width = this.right() – this.left();
int height = this.bottom() – this.top();
return width * height;
}
Shape

int area = bounds.area();

Шаблон рефакторинга «Перемещение метод а» (Move Method)
облад ает тремя важными преимуществами:
• Очень легко увид еть необход имо сть применения этого вид а
рефакторинга, при этом не требуется глубокое понимание смысла код а.
Как только вы увид ите д ва или больше сообщения, ад ресованные
д ругому объекту, значит, можно смело приступать.
• Механика выполнения рефакторинга быстра и безопасна.
• Результаты зачастую привод ят к про светлению. «Но класс
Rectangle не выполняет никаких вычислений… О! Теперь я вижу. Так


д ействительно лучше.»
Иногд а возникает желание переместить только часть метод а. Вы
можете вначале выд елить метод , переместить весь метод , а затем
встроить метод в первоначальный класс. Или вы можете прид умать
спо соб сд елать все это за од ин шаг.

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   114   115   116   117   118   119   120   121   ...   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