(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Экстремальное программирование на примере денег

$5+10 CHF=$10, если курс обмена 2:1

$5*2=$10

Сделать переменную amount закрытым членом класса

Побочные эффекты в классе Dollar?

Округление денежных величин?

equals()

hashCode()

Равенство значению null

Равенство объектов

Теперь, когда определено равенство (equality), с его помощью мы можем по­высить наглядность наших тестов. По идее, метод Dollar.times() должен возвра­щать новый объект Dollar, величина которого равна величине исходного объекта (метод которого мы вызываем), умноженной на коэффициент. Однако наш тест не показывает этого явно:

public void testMultiplicationO {

Dollar five=new Dollar(5);

Dollar product=five.times(2);

assertEquals(10. product.amount);

product=five.times(3):

assertEquals(15. product.amount);

}

Мы можем переписать первую проверку (assert-операцию) так, чтобы сравни­вать между собой объекты Dollar:

public void testMultiplicationO {

Dollar five= new Dollar(5);

Dollar product=five.times(2):

assertEquals(new Dollar(10). product);

product= five.timesO):

assertEquals(15. product.amount); }

Выглядит неплохо, поэтому перепишем и вторую проверку:

public void testMultiplication() {

Dollar five=new Dollar(5):

Dollar product=five.times(2);

assertEquals(new Dollar(10). product):

product=five.timesO):

assertEquals(new Dollar(15). product):

}

Теперь нам уже не нужна вспомогательная переменная product, поэтому устраним ее:

public void testMultiplicationO {

Dollar five=new Dollar(5):

assertEqua1s(new Dollar(10), five.times(2)):

assertEquals(new 0оПаг(15), five.times(3)):

}

Согласитесь, этот вариант теста значительно нагляднее. Учтем внесенные изменения. Теперь только класс Dollar использует экземплярную переменную amount, поэтому мы можем сделать ее закрытой:

Dollar

private int amount;

$5+10 CHF=$10, если курс обмена 2:1

$5*2=$10

Сделать переменную amount закрытым членом класса

Побочные эффекты в классе Dollar?

Округление денежных величин?

equals()

hashCode()

Равенство значению null

Равенство объектов

Вычеркиваем еще один пункт из списка задач. Заметьте, мы подвергли себя риску: если тест для равенства не смог бы точно определить корректность операции сравнения, тогда и тест для умножения не смог бы проверить, правильно ли оно работает. В TDD принято активное управление риском. Мы не гонимся за совершенством. Выражая все двумя способами - тестами и кодом, - мы надеемся уменьшить дефекты настолько, чтобы уверенно идти дальше. Время от времени наши рассуждения будут нас подводить, позволяя появляться ошибкам. Когда это случится, мы вспомним урок о том, что надо написать тест и двигаться дальше. Все остальное время мы отважно продвигаемся вперед под победно развевающейся зеленой полоской нашего индикатора (вообще-то мой индикатор не развевается, но я люблю помечтать).

Подводя итоги, мы:

• использовали только что разработанную функциональность для улучшения теста;

• заметили, что если два теста проваливаются одновременно, то наши дела плохи;

• продолжили, несмотря на риск;

• использовали новую функциональность тестируемого объекта для уменьшения зависимости между тестами и кодом.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Autodesk »
Обсудить материал в конференции Дизайн, графика, обработка изображений »
Написать редактору 
 Рекомендовать » Дата публикации: 11.07.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
AutoCAD LT 2019 Commercial New Single-user ELD Annual Subscription PROMO
AutoCAD - mobile app Premium CLOUD Commercial New Single-user ELD Annual Subscription
AutoCAD LT 2019 Commercial New Single-user ELD Annual Subscription
Kaspersky Endpoint Security для бизнеса – Стандартный Russian Edition. 10-14 Node 1 year Base License
Avira Antivirus Pro - Business Edition, 5 ПК, 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование в AutoCAD
Компьютерный дизайн - Все графические редакторы
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Один день системного администратора
3D и виртуальная реальность. Все о Macromedia Flash MX.
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
AutoCAD помощь чайнику (339)
Здравствуйте, Я только начал осваивать AutoCAD. Слышал такое определение как лимиты чертежа,...
 
Как извлечь рисунки из файла Word (47)
Вообще-то есть еще способ - сделать в Word-е Copy рисунка, открыть Microsoft Photo Editor и там:...
 
Куда обращаться с жалобой на почту? (1)
Привет всем, я работаю фотографом (ссылок не дам, пост не про рекламу). Мне давно хотелось...
 
Фотоколлаж (1)
Приветик всем. Хотите из обычной фотографии получить смешную и увлекательную картинку? Если есть...
 
Интерактивная 3d визуализация (2)
Нужны специалисты по интерактивной 3d визуализации.
 
 
 



    
rambler's top100 Rambler's Top100