Сейчас очень многие говорят о разработке через тестирование. Мы уже обсуждали мантру 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-проектах в условиях неопределённости. Подробнее...