Онлайн лекция

10 декабря 2011 г.

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

Мы договорились 18 декабря в 17.00 (время московское) сделать онлайн лекцию с разбором кода этого семестрового задания. Раз уж это будет онлайн лекция, я подумал, что можно предоставить доступ всем желающим (заодно опробовать идею с онлайн конференцией dotnetconf).

Как это будет:

  • Думаю, что это будет похоже на совместное программирование на AgileCamp, когда я сидел за компьютером и мой экран отображался на проекторе. Все участники сначала обсуждали куда двигаемся, а я воплощал это в коде.
  • Исходный код я выложу на Google Code. Чтобы его скачать надо будет установить TortoiseHg (Quick Start по TortoiseHg). Во время обсуждения я буду делать коммиты и пушить, так что все смогут получать себе последние версии кода. Ссылка на исходный код - http://code.google.com/p/tdd-refactoring-poker/source/checkout
  • Будем писать программу для игры в покер, это и есть семестровое задание моего студента, которое он сам себе придумал. Я плохо знаю правила покера, поэтому буду рад экспертам в этой области :)
  • Код будет в Visual Studio 2010, писать будем на WinForms/C#
  • Я буду использовать ReSharper
  • Тесты на xUnit
  • Взаимодействие будем строить через GoToWebinar. Ссылка на регистрацию https://www3.gotomeeting.com/register/544517654. Не забудьте подключить микрофон, будет очень много живого общения.

По способу разработки я вижу два варианта:

  1. Рефакторить существующий код. Этот вариант меня немного беспокоит, потому что код очень запутанный, а тестов на него нет. Даже автор проекта не сможет гарантировать, что мы ничего не сломаем в логике.
  2. Оставить существующий код в виде артефакта, его не трогать, а писать систему заново с помощью TDD.

Я пока думал сделать второй вариант, но большинству интересен первый, поэтому будем рефакторить legacy code.

Буду рад услышать ваши пожелания по проведению. План написан примерный, в него можно вносить изменения.

Обратите внимание: автор проекта, студент 4-го курса кафедры Информатики, признал, что в коде есть недостатки и будет рад конструктивной критике.

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

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