TDD / Assert DSL на примере .Net
2011-07-15 17:00:25
Никто уже не отрицает полезность тестов в любой сколько-нибудь сложной системе. Без тестов очень ...
+ развернуть текст сохранённая копия
Никто уже не отрицает полезность тестов в любой сколько-нибудь сложной системе. Без тестов очень быстро можно скатиться в хаос и проводить большую часть времени в отладчике, занимаясь поиском и отловом косвенных эффектов от изменений той или иной части приложения. Тесты важны, нужны и так далее по тексту.
По науке, тесты являются документированием системы. Грамотно написанные тесты дают понять, как работает система, как ведет себя, причем читаться все это должно как готовая спецификация на поведение системы. Т.е. в идеале должен получаться связный и понятный текст. Это идеал, к которому постепенно приближаются методы тестирования, начиная от юнит тестирования и наиболее явно проявляясь в поведенческом/приемочном тестировании, когда сами тесты уже пишутся на языке бизнеса (в этом моменте вспоминаем Fitnesse).
При написании тестов не стоит скупиться на строчки кода и классы, важно только их правильно структурировать. Я считаю, что может быть вполне нормальной ситуация, когда у вас тестовый класс состоит только из одного тестового метода – не надо этого стесняться, это гораздо лучше, чем классы на 20 экранов. HD экранов.
В общем, все должно быть направлено на максимальную ясность и четкость тестов, чтобы явно было видно все взаимосвязи. Чтобы можно было восстановить логику программы по одним лишь тестам. В дело читабельности пойдет не только Assert DSL (Domain Specific Language), но и именование файлов, подход Arrange Act Assert. Все это не новые подходы как оказывается, но широкой известности пока не получившие, судя по тому, что я вижу в окружающих меня проектах. Да и сам я натолкнулся на новые темы случайно, изучая исходные коды StructureMap.
Чтобы не томить, сразу расскажу какие основные шаги предлагаются для улучшения тестов:
- Именовать тестовые файлы по основному методу, который тестируется.
- Использовать DSL для создания объектов, чтобы методы делать максимально лаконичными.
- Стараться писать тесты в стиле «один тестовый метод – один assert».
- Структурировать внутренности теста.
- Создать и использовать Assert DSL.
Думаю что для большинства многие перечисленные пункты не новость, и почти все они применяются в реальной разработке.
Раскрытие темы с примерами и в картинках
Тэги:
.net,
4.0,
dsl,
extension,
fluid,
interface,
method,
tdd
Каскадные Таблицы Стилей / Локализация html-страницы средствами CSS
2011-06-10 16:11:06
Люди по-разному относятся к CSS. Кто-то ворчит, что раньше и таблицы были зеленее, кто-то горячится, ...
+ развернуть текст сохранённая копия
Люди по-разному относятся к CSS. Кто-то ворчит, что раньше и таблицы были зеленее, кто-то горячится, мол, дайте мне ваши таблицы, уж я их озеленю. Лично я довольно давно воспринимаю CSS-файлы как совего рода конфиги для внешнего вида веб-страницы. По сути ведь так и есть. У хорошего верстальщика HTML используется для того, чтобы создать структуру документа, у которой затем с помощью CSS настраивается внешнее отображение.
Обычно под внешним отображением понимаются всякие красоты вроде изображений, круглых уголков, градиентиков и прочей вебдванольности. Однако основным средством передачи информации в Интернете до сих пор является их величество текст. Текст применяется везде: и в навигации по сайту, и в основной информации.
Сейчас, когда космические сайты бороздят просторы мирового паутины, все чаще возникает потребность делать их многоязычными. Способов существует много. Под разные платформы, фреймворки и шаблонизаторы. Способ, который хочу предложить я, использует в качестве основы CSS.
Читать дальше →
Тэги:
css,
css3,
html,
interface,
language
PHP / Тонкости (странности?) работы с интефейсами
2011-04-10 17:40:18
... ="php">
interface someInterface{
public function someMethod();
}
interface anotherInterface ...
+ развернуть текст сохранённая копия
Знаешь ли ты что такое интерфейс %username%?
Если да, то я думаю этот код не вызовет у вас вопросов. PHP тонкости (странности?) работы с интефейсами
interface someInterface{
public function someMethod();
}
interface anotherInterface{
public function someMethod();
}
class Foo implements someInterface,anotherInterface {
public function someMethod(){
echo 'someMethod() was called'.PHP_EOL;
}
}
$foo = new Foo();
$foo->someMethod();
Итак что выведет на экран скрипт в результате своей работы.
Ответ под кaтом.
Читать дальше →
Тэги:
interface,
oop,
php
"Humanize it" про интерфейсы
2010-05-19 13:18:14
Информация для харьковчан: 3 июня с IT Cafe с 1700 будет проходить семинар, на котором будут ...
+ развернуть текст сохранённая копия
Информация для харьковчан: 3 июня с IT Cafe с 1700 будет проходить семинар, на котором будут говорить про юзабилити, интерфейсы, конверсию и всё, что модно, по мнению организаторов семинара, в этом сезоне. Продолжить чтение →
Тэги:
cafe,
comp,
humanize,
interface,
kharkov,
seo,
usability,
web
Про форму авторизации vkontakte
2009-11-19 14:49:57
Я, конечно, не могу критиковать форму вот так вот сходу не разобравшись. Может, в этом есть какой-то ...
+ развернуть текст сохранённая копия
Я, конечно, не могу критиковать форму вот так вот сходу не разобравшись. Может, в этом есть какой-то неизвестный мне смысл, не видный с первого взгляда, понятный либо частым пользователям сервиса, либо разработчикам. Может, прийдут умные комментаторы и разъяснят мне суть, и всё окажется просто, и я скажу "ну а я и не критиковала вовсе вот так вот сходу!", да. Итак, возьмём форму авторизации на сервисе vkontakte. Продолжить чтение →
Тэги:
form,
interface,
login,
vkontakte