Сегодня я разбирал семестровые работы студентов. Одна из работ на столько хорошо подходила для рефакторинга, что на лекции мы решили разобрать ошибки и исправить их. К сожалению, в лекционной нам не включили проектор, а запасная аудитория, которую мы в этом случае используем, была занята заочниками. Лекция сорвалась, но мы со студентами решили восполнить это упущение, тем более, что все хотели посмотреть, как можно было по-другому реализовать эту систему.
Мы договорились 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. Не забудьте подключить микрофон, будет очень много живого общения.
По способу разработки я вижу два варианта:
- Рефакторить существующий код. Этот вариант меня немного беспокоит, потому что код очень запутанный, а тестов на него нет. Даже автор проекта не сможет гарантировать, что мы ничего не сломаем в логике.
- Оставить существующий код в виде артефакта, его не трогать, а писать систему заново с помощью TDD.
Я пока думал сделать второй вариант, но большинству интересен первый, поэтому будем рефакторить legacy code.
Буду рад услышать ваши пожелания по проведению. План написан примерный, в него можно вносить изменения.
Обратите внимание: автор проекта, студент 4-го курса кафедры Информатики, признал, что в коде есть недостатки и будет рад конструктивной критике.