Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×
  • Мой путь

    Denis Osetrov, спасибо. Вот как раз самое «больное» для меня было сделать ТДД привычкой. Любая привычка приходит за 20 дней. Завел пинарик и вперед. Когда привычка привилась — я обрадовался и вздохнул с облегчением. Сейчас «больно» бью себя по пальцам оттого, что иногда позволяю себе написать немного больше функционала, чем того требует тест. Приходится говорить себе «ээээ, чувак, так не пойдет», ремарить (а больнее когда просто удалять) избыточный (и чаще всего содержащий от 2 до 5 ошибок) код и подыскивать тест (тут уже тест, а не спецификацию), который бы выловил ту каку, которую я написал в реализации. Так в одной паре придумали игру. Очень мотивирует. По всем правилам парного программинга — один пишет минимум кода, чтобы тест заработал. Самого страшного и жуткого кода. Второй пытается с помощью тестов вывести его на чистую воду. Проигравает тестер, если ему больше нечего сказать или имплементатор, если тестер его заставил написать обговоренную изначально реализацию (достаточной для красивого коммита). А потом совместно делают рефакторинг того, что намудрили.Советую вам это делать в паре — так, подстегивая друг друга, 20 рабочих дней пройдет для вас двоих незаметно. А потом еще будет долго что вспомнить с напарником. Работает лучше любого тимбилдинга. Вспомнил как сказал Стив Макконнел: хорошего программиста (как и человека) делают таковым его привитые привычки. Ой! Чего-то я увлекся:) Успехов вам и мне!

  • Мой путь

    marrkiz, это там где вертолетик летит и собирает чувачков машущих какой-то частью тела (кажется рукой), я другие чувачки отстреливаются? И еще такая мелодия на старте, которую до сих пор слышу. Там вконце под землей начиналось море и пробомбив грунт, можно было под землю опуститься. Глюк в том, что можно было отстреливать врагов, а они тебя не видят. Бомба, пущенная под землей, падает с неба. Вы про эту игрушку? Эххх... Жаль, что там только один уровень был. «делать проги таким образом, чтобы забыть о юнит тестах как о не нужной ерунде» о! Это самое то, что мне надо. Как только становится чуть комфортно — пора линять. Спасибо Николаю и вам за наводку. Когда знаешь, что впереди тупик — характер прогулки меняется.eugene_n, спасибо. Буду. Сейчас борюсь с показателем унылости/понятности/затянутости одной (уже написанной) статьи. Как будет готова, обязательно выложу.

  • Мой путь

    Спасибо Автору этой замечательной подборки. Кажется, меня ждет еще одна бессонная ночь...

  • Мой путь

    Андрей Церкус, unit или блочное тестирование предназначено для того, чтобы тестировать какой-то черный ящик, если мы знаем, что подается на вход и что получается на выходе. Если удастся в вашем ящике, двигающем некий дивчик немного порефакторить и выделить блок который будет просто двигать, используя какой-то интерфейс, причем ему будет все равно что двигать, главное было бы оно двигабельно, то вы сможете протестировать такой модуль с помощью юнит теста. Можно так же установить координаты мыши и вызывая метод, проверить в какую область разместился дивчик. В общем, есть черный ящик. Как вы определите тот факт, что он рабочий? Вы передадите что-то на вход и проверите результат. Неважно как воздействует на вас результат — вы всегда можете это определить. Вот этому стоит научить компьютер. Подготовить входные данные, вызвать тестируемый черный ящик и как-то проверить результат. Он сделает это автоматически и скажет вам «красный», если система повела себя не так, как закладывалось."как написать юнит-тест какого-то куска кода, который работает с громадным числом вариаций входных данных" Думаю это не «кусок», а «кусочище». В таком случае я бы декомпозировал этот черный ящик на маленькие ящички и тестировал бы их независимо. А если это не получается, тогда утверждал бы с помощью теста: 1й тест «если в этот хаос я засуну 2, то на выходе сделав А-С-К-Е-А-А-И-А, я получу 45» 2й тест «если я передам −1, то я получу 5, при этом ничего делать не надо». И так много-много раз, пока не успокоюсь за тот код, с которым работаю. Первопричина создания теста — стресс, который на меня нагоняет код. Стресс, связанный с тем, что я не знаю, как код работает, или мне кажется, что код работает неисправно, или я хочу поставить какую-то контрольную точку, позволяющую мне сделать, к примеру, рефакторинг. Мне страшно — пишу тест. Мне спокойно — продолжаю работу. Если мне надо узнать, как поведет себя система, если я сделаю М, тогда я отладке предпочитаю написания тестирующего кода. Если кто-то спрашивает меня, как работает это, я предлагаю ему написать автоматический тест (перед тем изучив существующие тесты) чтобы узнать это. Это экономит время и оставляет наследие.

  • Мой путь

    Maxim Yemelyanov, спасибо. «Обычно проектирую сверху вниз» Это хороший инструмент, тоже пользуюсь его преимуществами. В SCRUM с его небольшими итерациями — самое то. «мне кажется я только сейчас начинаю понимать что-то в этом» кажется, я только начинаю понимать о чем вы.

  • Мой путь

    glassofmind, вы правы. Спасибо за замечание. Несознательно я тоже стал его использовать. Задав себе вопрос «почему? » я нашел ответ. Дело в том, чтобы изгнать неуверенность приходится прибегать (сознательно или чаще несознательно) к использованию инструментов, которые дают эту уверенность (или иллюзию). Если сравнить (фоносемантически) слово «функциональность» и слово «функционал», то последнее более сильное, нежели правильный вариант. Проще это простое детское повторение, и стоит говорить «повторюшка шрюшка» дабы отучить:). Чем больше наблюдаю за общением (неважно на с каким уровнем знания русского языка), тем больше замечаю, что человечество пошло не тем путем. Слова это якоря, которые вызывают у разных людей разные чувства. Мое «дерево» и ваше «дерево» рождают разные чувства у меня и у вас. Мое определение будет строиться на моем опыте общения с деревом, а ваше на вашем. Они разные. Мы можем спорить часами об одном только дереве. И по сути, каждый из нас будет прав потому как описывает один и тот же объект в действительности, но разными чувствами с использованием общепринятого Русского языка. Сложно порой, вроде слушаешь кого-то, но не слышишь или наоборот ты говоришь, а тебя не слышат хотя слово в слово могут повторить все то, что ты сказал.Думаю, главное, чтобы мы слышали и понимали друг друга, а не то как мы к этому придем. Согласен с вами в том, что от несознательно привитых паразитов стоит избавляться. Что делать, если для лучшего понимания в узком кругу людей приходится использовать эти слова, а когда выходишь на свет, то сложно вот так просто переключиться обратно?

  • Мой путь

    smp, спасибо за ответ. Revenge_one и Сергей Волошин. “Увесь світ старався скільки часу, а виявляєцця усе то мона через ‘Мой путь’...” думаю, мной было бы потрачено еще много лет, чтобы без этих “стараний” выйти на текущий уровень. Не факт, что я проделал бы этот путь. Быть может, все осталось бы на процедурах, а я ушел в другую степь и через 20 лет придумал свою какую-то методологию. Не знаю. Потому хочу сказать спасибо Авторам тех книг, которые читал и тем людям, которые меня чему-то научили. Спасибо. Думаю, если забрать сейчас у всех интернет и книги, то пара-тройка поколений, и мы снова вернулись бы к мускульной силе.Св. Бубукий, хорошо, когда к целям везет. Теперь мы имеем кризис, он делает свое дело — забирает долги назад. Есть над чем подумать. Где-то слышал совет “давай больше чем берешь” — это я имел ввиду, когда говорил “я хочу у вас работать, я не знаю как, но научусь”.

  • Мой путь

    Revenge_one, людям свойственно преувеличивать свои достижения и я не исключение. Все мы дети в большой песочнице, и, когда какой-то ребенок построил свой замок, пускай даже по книге «Замки из песка для чайников», он хочет чтобы все вокруг знали, что, в первую очередь, сделал его он сам, а потом уже с помощью других. Где-то я слышал: «все что хорошо сказано — мое». Revenge_one, спасибо вам за замечание. Лучше сказать и дать возможность устранить непонимание, чем просто подумать и составить неправильное мнение про человека, а потом постоянно доказывать себе что он именно такой и не иначе («а если он оправдывается, значит я прав! »).

  • Мой путь

    Тень, спасибо за подробный комментарий и за наводку с Data Driven...Что касается «тыкания в одну кнопку», так это так же как и ходить-доказывать кому-то что тыкать не стоит. Помню, как только я открыл это чудное свойство ТДД, я вывесил над рабочим местом лист А4, где написал «дней без дебага» и каждый день ставил туда галочку. На меня смотрели как на диковинку. Еще чуть позже я просто заражал заинтересованных. Еще чуть позже только во время парных программингов, но так же с активным втиранием. Теперь считаю, что только примером и молча (пока не спросят) можно чего-то эффективно достичь — много времени на ожидание запроса «а как это ты так? », а потом эффективный диалог, в котором все сразу в подкорку уходит (без критики типа «ты дурак „-“ нет ты сам дурак»). А у тебя как с этим, есть КПД? Вот недавно задался вопросом «почему этот мужик так дорого берет за свои тренинги? ». Ответ — потому что он получает высоко мотивированных, желающих получить информацию, людей. А ломать чужую (без его ведома) психику и переводить на новый инструментарий (тем более не факт, что скоро снова прийдется переучиваться на что-то новое) — это себе во вред. Лучше выучить еще один инструментарий, а потом еще и еще один, а когда к тебе подойдут с вопросом «а как у тебя так выходит? » — вот тогда объяснить куда он попал и повести за ручку к результату. Кстати дебагом пользуюсь в тех случаях, когда чувствую что это будет эффективнее. И тут можно пойти дальше от «тыкания мышкой в одну точку». Например под eclipse Ctrl-R выполняет все за тебя до текущей линии, в которой останавливается (тебе стоит только оставить точку где-то на входе). А от мышки советую вообще отказаться — любая ИДЕ располагает множеством горячих клавиш, с помощью которых «тыкание» кажется уже не таким тривиальным. Ускоряться можно. Только кто хочет? Потому и советую показать примером — когда ты покажешь показатель (качество+время+результат) в несколько раз выше среднего, тебе с большей долей вероятности поверят. Спасибо за комментарий.

  • Мой путь

    Vlad Romanenko, рад что вызвал положительные эмоции. leokom;).

  • ЗОМБИ-программисты

    Классная статья. Про жизнь, только в непривычном цвете от чего и критика. Мне кажется что настоящий self-super-pupper-motivated есть только в занятии над СВОИМ хобби. На меня часто вешали ярлык лентяй и в школе и в университете и еще где-то там. Лентяй и все тут. Но стоило мне самому поискать занятие по душе, так мало кто теперь скажет подобное. Согласен с тем, что менеджеры ленивые и зомбанутые — ихними руками (ввиду отсутстивия рук у программистов) из хорошего программиста делается зомби. Иногда зомби самородные бывают. Их можно разделять по половому признаку и расовой принадлежности... Но мне проще говорить человек не на своем месте и делает не то, а это уже забота его менеджера. Сегодня я супер пуппер, а завтра зомби. После завтра оп! и снова на волне... Всякое бывает. Думаю можно поиграться с термином «инкубационный период», раз уж мы заговорили про болячки. А еще иммунитет... Спасибо, cencio, за статью. Хорошая работа.

  • Об эффективных багрепортах

    Спасибо. Хорошая статья. Краткость сестра таланта.

    Підтримав: Євгеній Кулинич
← Сtrl 123 Ctrl →