Научные исследования эффективности Test-First Development

Сейчас очень многие говорят о разработке через тестирование. Мы уже обсуждали мантру TDD и делились своими впечатлениями и опытом на местных встречах.

Технические долги

Этот термин впервые ввел Ward Cunningham:

  • Технические долги включают ту работу в проекте, которую мы решаем (хорошо, если осознанно) не делать в данный момент, но которая будет мешать развитию проекта в дальнейшем, если не будет выполнена.
  • Технические долги не включают отложенную функциональность, которая была бы хорошим дополнением к проекту, но в данный момент имеет низкий приоритет (например, улучшенный интерфейс пользователя). Кроме этого, тех. долги это не баги.

Хороший коммит

Совсем недавно в очередной раз столкнулся с проблемой комитов и вообще отношения к хранилищу кода в команде. Этот вопрос очень часто поднимается в таких книжках, как Code Craft. Как показывает практика, ничего от этого не меняется. Либо книжки не читают, либо не знают, как применять на практике полученные знания.

Я уже начинаю думать, что основная причина - это лень. Или программирование в стиле "агонии". Так я называю печатание 10000 символов в час без передышки с полной самоотдачей и без коммитов. Хватаются то за одну задачу, то за другую. И на вопрос: "Почему уже 2 дня не коммитишь?", можно услышать: "Дак у меня еще не до конца функциональность готова. Вот еще немного подшлефую и закомичу".

Чтобы понять как делать хорошие коммиты, необходимо ответить на вопрос, что такое хороший комит?

TechDays в Екатеринбурге

14 ноября 2008 г.

12ого ноября в Екатеринбурге прошла конференция TechDays.

Такие встречи всегда радуют меня и моих друзей, потому что есть возможность пообщаться с разработчиками из других городов и узнать последние новости из мира IT.

Как всегда были приятные мелочи от Microsoft - ручка, блокнот, DVD диск с записанными докладами и еще много всего. По ходу дела разыграли пару забавных сувениров.

Для всех осталось немного непонятно, почему не было докладов по самым последним тема и технологиям, таким как: ASP.NET MVC, WPF, Silverlight, ADO.NET Entity и т.д. Я, естественно, ничего не имею против Sharepoint, но по моему мнению это не "острие атаки". Зато теперь есть повод обсудить все это в нашей юзер группе.

Спасибо ребятам, которые делали доклады и всем кто присоединялся к обсуждениям в перерывах!

Впечатления и материалы со встречи SUNETA на тему "Гибкие методологии разработки"

9 ноября 2008 г.

Вчера прошла первая встреча Южно-Уральского сообщества .NET разработчиков на тему "Гибкие методологии разработки".

Встречи на такие темы раньше не проводились и нам было интересно посмотреть на аудиторию. Количество собравшихся нас очень порадовало! К тому же оба доклада проходили в форме обсуждения. Вопросы задавались прямо с мест по ходу выступления.

Я делал доклад на тему "Применения принципа инверсии зависимостей". Целью доклада было показать, как на практике применяется этот принцип. На протяжении всего выступления я вместе с присутствующими совершенствовал первую версию демонстрационного проекта. Было очень много вопросов о том как надо применять этот принцип, когда этому стоит уделять внимание, как он влияет на модульность в проекте и т.п. Я постарался ответить на все вопросы и поделился практическими советами и приёмами из своих проектов. Все получили хороший практический опыт и возможно узнали что-то новое для себя.

Материалы моего доклада можно скачать здесь http://alex-byndyu-presentations.googlecode.com/svn/trunk/Dependency Inversion - Chelyabinsk 07.11.2008

Паттерн MVP для ASP.NET WebForms

Сейчас разрабатываю проект на ASP.NET. Для отделения представления данных в слое отображения от логики их формирования и обработки применяю паттерн Model-View-Presenter.

Суть паттерна в том, чтобы ASP.NET форма (View) реализовывала интерфейс, с которым сможет работать представление данных (Presenter), которое в свою очередь оперирует объектами предметной области (Model).

Red-Green-Refactoring. Зачем красная полоска?

Напомню «мантру» TDD — Red-Green-Refactoring. И главное правило — Никогда не пиши рабочий код без неудачно завершившегося теста.

TDD и LLBLGen Pro

LLBLGen Pro - это O/R mapper, который генерирует .NET код, основываясь на схеме в базе данных.

Сейчас мы активно его используем для работы над нашим проектом. Надо отметить, что эта ORM имеет очень хороший интерфейс и настройку.

Тесты вперед?

Многие меня спрашивают: "Не жалко тебе тратить время на написание тестов?". Могу ответить коротко: "Нет".

Exception logic?

Недавно проводил собеседование. На тестовое задание вместе выбрали сделать консольный калькулятор. Суть работы в том, что вы вводите первый операнд, операцию и второй операнд.

> calculator.exe 1 + 2

После чего должен показаться результат.

Использование паттернов Strategy и Registry

Слишком много получилось писать в комментарии, решил вынести в отдельный пост.

В приведеном случае, когда логика постоянно меняется (пример кода в моем комментарии на пост Евгения), действительно лучше всего подойдет паттерн Visitor.

Но для такого простого варианта, когда классу ClassA соответствует определеная функция, лучше все-таки использовать Стратегию.

Предлагаю модификацию реализации стратегии Евгения.

Моя книга «Антихрупкость в IT»

Как достигать результатов в IT-проектах в условиях неопределённости. Подробнее...