Привет, %habrausername%. Я хочу сыграть с тобой в игру.
Ты устроился на новую работу. И в первый же день, сразу после подписания NDA, тебе показывают то, что осталось от предыдущего разработчика. Тебе хочется кричать, хочется бежать из этого проклятого места, но трудовой договор сковывает тебя по рукам и ногам. Поэтому ты лишь еле слышно материшься.
От предыдущего разработчика осталась кучка кода и домашние тапочки. Ты осторожно кладёшь тапочки в мусорную корзину и начинаешь рефакторинг.
Этот код ужасен. Во-первых, нет никого, кто мог бы сказать, зачем этот код писался. Во-вторых, нет никакой документации. Нет даже комментариев, не говоря уже о юнит-тестах. В-третьих, код не структурирован, а имена классов и методов ни о чём не говорят. И, наконец, работать это должно начать не сегодня, и даже не вчера, а внезапно.
Ну как, %habrausername%, пробежал холодок по спине?
В такой ситуации каждый программист считает, что сейчас-то он сделает лучше, чем было. Но так ли это? Объективно ли код становится лучше после рефакторинга? Если да, то в чём критерий улучшения кода? А может быть рефакторинг служит удовлетворению амбиций разработчика?
Я предлагаю вашему вниманию TB MMOG под названием «Весёлые рефакторинги».
Суть в следующем. Имеется некий код, ведущий и N участников. Ведущий высылает на почту первому участнику исходный код. Участник проводит рефакторинг и отправляет результат обратно ведущему. Затем ведущий отправляет результат второму участнику и так далее, пока участники не закончатся. Передача кода происходит анонимно, то есть ни один из участников не знает, чей код он рефакторит.
Цель — получение представления о «совершенном коде» и методах, которые используют разные разработчики для его достижения. Ну и конечно же, это будет весело. По итогам Весёлых рефакторингов будет написана статья с анализом сделанных изменений, а все исходные коды будут выложены в общий доступ.
Если вы хотите принять участие в Весёлых рефакторингах, отправьте заявку на почту recrowding@gmail.com. В заявке укажите свой емейл (будет использоваться исключительно для отправки вам исходного кода) и пару слов о себе (будут опубликованы в итоговом отчёте, сюда могут включать контакты, ссылка на сайт и тп).
Чтобы не настал хаос, вводится несколько правил:
- Не задерживайте у себя код слишком долго. Если от вас не будет ответа более двух суток, вы будете исключены из игры.
- Не стоит писать в коде какие-то личные данные, дабы не искушать следующего участника обратиться к вам за помощью. Емейлы, имена, явки и тп из исходного кода будут безбожно вырезаться.
- Нельзя менять язык программирования. В остальном участнику представляется полная свобода действий в рамках понятия «рефакторинг». Да, откровенный треш будет исключаться.
- Общее ревью будет опубликовано на Хабре, а работы всех участников конкурса будут выложены в общедоступный репозиторий вместе с парой слов себе, указанной в заявке.
Для этих Рефакторингов выбран язык Java (потому что рефакторить программу на Яве можно бесконечно). Заявки принимаются до 18 марта.
UPD Раз уж зашла речь, скажу, что исходная кучка кода собрана в одном файле и имеет длину не более 200 строк.
UPD2 Сказать, что мне пришло много заявок — это ничего не сказать. Ответить всем у меня чисто физически времени не хватит, да и не надо это, наверное. Главное, что все поступающие заявки записываются, а исходные коды уже пустились в плавание. Наберитесь терпения, всем, отправившим мне емейл, со временем придёт архив с кодом.