Показаны сообщения с ярлыком TDD. Показать все сообщения
Показаны сообщения с ярлыком TDD. Показать все сообщения

среда, 28 мая 2014 г.

Как парно программировать онлайн на Java

А также на Javascript/Node.js/Ruby...


Возникла задачка, как же программировать онлайн парно на Java? Вроде IDE существуют онлайн но чтобы парно? Например круто так проводить TDD Game!

Решение:


  • Создаём новый Workspace (Create new workspace)
  • Для Java выбираем вариант Custom
  • Жмём Start Editing и попадаем в наше новое рабочее пространство:


  • Здесь можно создавать файлы и папки, и есть терминал для работы :)
  • New file, HelloWorld.java:
  • Для запуска, в терминале вводим : javac HelloWorld.java; java HelloWorld
    (через меню работы с джавы пока нет, а например с Node.js есть!)
  • Чтобы работать парно - нужно просто скинуть линк на твой Workspace напарнику (что-то типа этого https://c9.io/leokom/test3), дать ему разрешение на редактирование и вперёд, к совместному кодингу, ТДД играм и прочим интересностям! (там также есть небольшие плюшки а-ля Google Docs например чат). 
  • Так выглядит одна из наших первых парных разработок онлайн с напарником Артуром: (здесь мы пользуемся фичей Java assert вместо JUnit assert, и соответственно запускаем виртуальную машину java с ключом -ea)
  • Как и полагается хорошему облачному сервису, он обладает "машиной времени" :) File -> File revision history можно посмотреть как оно было раньше:
Удачного парного программирования!

понедельник, 22 апреля 2013 г.

Как генерировать тест-кейсы в TDD

Интересную тему поднял СанЁк с Виталиком на недавнем тренинге Coding Dojo.

Есть пара программистов, работают по TDD, реализуют фичу. Вроде и тесты зелёные, и простая реализации кода. Но что-то беспокоит - ощущение, что что-то не сделано. Как же создать новые тесты, и чтобы красные они были?...

По идее напарник должен был бы помочь. Но может случиться что у пары нет идей?

Позвать третьего? Тоже вариант. Но тогда ему надо вникнуть в таск хорошенько) желательно с предысторией. Подвариант: ничего ему не рассказывать, только дать условия задачи и код с тестами. Пусть сам разберётся, без тех констрейнтов которые у пары уже сформировались и которые возможно мешают увидеть картинку с высоты птичьего полёта.

Сделать перерыв и вернуться к этому позже? Вполне может быть... У меня по дороге домой столько идей роилось по поводу того как можно улучшить мой алгоритм игры в бомбермена и даже баги мысленно нашёл) Но что сделать, если таск надо сделать здесь и сейчас и значит перерыв не покатит?

5 минут по-любому надо выкроить. И отойти от компа подальше...

А может удалить парочку тестов (или все)? Вдруг их наличие давит на подсознание и мешает генерировать что-то новое?

Пойти в крайности? Попытаться понять что является крайним случаем для этой задачи. А может "крайность" эта относительная, зависит не от задачи, а от текущей реализации? Т.е. попытаться почувствовать для каких диапазонов входных эта реализация рулит, а для каких чувствуется, что не будет работать.

Задокументировать реализацию, не меняя сам код. Например отжавадокировать/прокомментировать свою реализацию. Вот представь что тесты твои читать никто не будет. Объясни читателю кода почему твои магические 3 и 5 будут работать хорошо для этой задачи.

Отрефакторить реализацию. Магию констант обозвать... Даже переменные переименовать. Повыносить методы итд. Что угодно чтобы реализация преобразилась и можно было взглянуть на неё под другим углом.

Попытаться переформулировать задачу. Представить себе понятия реального мира, которыми можно заменить то что требуется в задаче.