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


Sum public Money reduce( Bank bank



Download 1,35 Mb.
Pdf ko'rish
bet39/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   35   36   37   38   39   40   41   42   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Sum
public Money reduce(
Bank bank
, String to) {
int amount = augend.amount + addend.amount;
return new Money(amount, to);
}
Money
public Money reduce(
Bank bank
, String to) {
int rate = (currency.equals("CHF") && to.equals("USD"))
? 2
: 1;
return new Money(amount / rate, to);
}
Метод ы д олжны быть общед о ступными (public), так как все
метод ы интерфейсов д олжны быть общед о ступными (я над еюсь,
можно не объяснять, почему).
Теперь мы можем вычислить курс обмена внутри класса Bank:
Bank
int rate(String from, String to) {
return (from.equals("CHF") && to.equals("USD"))
? 2
: 1;


}
И обратиться к объекту bank с про сьбой пред о ставить значение
курса обмена:
Money
public Money reduce(Bank bank, String to) {
int rate = bank.rate(currency, to);
return new Money(amount / rate, to);
}
Эта над оед ливая цифра 2 снова отсвечивает как в разрабатываемом
код е, так и в теле теста. Чтобы избавиться от нее, мы д олжны созд ать
таблицу обменных курсов в классе Bank и при необход имо сти
обращаться к этой таблице д ля получения значения обменного курса.
Для этой цели мы могли бы во спользоваться хеш-таблицей, которая
ставит в соответствие паре валют соответствующий обменный курс.
Можем ли мы в качестве ключа использовать д вухэлементный массив,
сод ержащий в себе д ве валюты? Проверяет ли метод Array.equals()
эквивалентно сть элементов массива?
public void testArrayEquals() {
assertEquals(new Object[] {"abc"}, new Object[] {"abc"});
}
Нет. Тест провалился. Прид ется созд авать специальный объект,
который буд ет использоваться в качестве ключа хеш-таблицы:
Pair
private class Pair {
private String from;
private String to;
Pair(String from, String to) {
this.from = from;
this.to = to;
}
}


Мы планируем использовать объекты Pair в качестве ключей,
поэтому нам необход имо реализовать метод ы equals() и hashCode(). Я не
собираюсь писать д ля этого тесты, так как мы разрабатываем код в
контексте рефакторинга. Дело в том, что от работо спо собно сти этого
код а жестко зависит успешное выполнение существующих тестов. Если
код работает неправильно, существующие тесты потерпят неуд ачу.
Од нако если бы я программировал в паре с кем-то, кто плохо
пред ставлял бы себе направление д альнейшего д вижения, или если бы
логика код а была более сложной, я несомненно приступил бы к
разработке специальных тестов.
Pair
public boolean equals(Object object) {
Pair pair = (Pair) object;
return from.equals(pair.from) && to.equals(pair.to);
}
public int hashCode() {
return 0;
}
0 – ужасное хеш-значение, од нако такой метод хеширования легко
реализовать, стало быть, мы быстрее получим работающий код . Поиск
валюты буд ет о существляться про стым линейным перебором. Позже,
когд а у нас буд ет множество валют, мы сможем тщательнее проработать
этот вопро с, использовав реальные д анные.
Теперь нам нужно место, в котором мы могли бы хранить значения
обменных курсов:

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   35   36   37   38   39   40   41   42   ...   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