Упражнения для осуществления хороших методов, таких как TDD и Насмешка

Не в спецификации, нет. Основное различие находится в ожиданиях программиста, когда они читают Ваш код за 2 года. структуры, как часто предполагается, являются POD. Структуры также используются в шаблонном метапрограммировании при определении типа в целях кроме определения объектов.

20
задан ramnik 9 July 2009 в 20:02
поделиться

6 ответов

Эту вещь трудно поощрять, потому что она может быть воспринята (довольно справедливо) как кардинальное изменение; не столько продвижение к цели, сколько совершенно другой подход к вещам.

Краткий список советов:

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

  • Сначала научитесь самостоятельно писать модульные тесты

    • Попрактикуйтесь в написании тестов для существующих методов. Вы, вероятно, будете биться головой о стол, пытаясь протестировать много кода - это не потому, что тестирование сложно или вы не можете понять его; это более вероятно, потому что ваш существующий код и стиль кодирования плохо поддаются проверке.

    • Если вам сложно начать работу, найдите самые простые методы и используйте их в качестве отправной точки.

  • Затем сосредоточьтесь на улучшении тестируемости кода, который вы создаете.

    • Самый важный совет: делайте вещи меньше и ближе к делу. Это большое изменение - это труднее всего заставить себя сделать, и еще труднее убедить в этом других.

Лично у меня был «момент ясности», когда я читал книгу Боба Мартина «Чистый код»; в первой главе рассказывается о том, как будет выглядеть чистый метод, и в качестве примера он берет ~ 40-строчный метод, который визуально напоминал то, что я создал, и преобразовывает его в класс, который едва ли больше по количеству строк, но не состоит из ничего но небольшие методы, которые, возможно, состоят из 3-7 строк каждый.

Глядя на эти крошечные методы, он внезапно понял, что краеугольный камень модульного тестирования «каждый тест проверяет только одно» легче всего достичь, когда ваши методы делают только одно (и делают это одно, не имея 30 внутренних механизмов в play).

Хорошо то, что вы можете сразу же начать применять свои выводы; попрактикуйтесь в написании небольших методов и небольших классов и попутно тестируйте. Вы, вероятно, начнете медленно и довольно быстро столкнетесь с некоторыми препятствиями, но первые пару месяцев помогут вам указать правильное направление.

Хорошо то, что вы можете сразу же начать применять свои выводы; попрактикуйтесь в написании небольших методов и небольших классов и попутно тестируйте. Вы, вероятно, начнете медленно и довольно быстро столкнетесь с некоторыми препятствиями, но первые пару месяцев помогут вам указать правильное направление.

Хорошо то, что вы можете сразу же начать применять свои выводы; попрактикуйтесь в написании небольших методов и небольших классов и попутно тестируйте. Вы, вероятно, начнете медленно и довольно быстро столкнетесь с некоторыми препятствиями, но первые пару месяцев помогут вам указать правильное направление.

12
ответ дан 30 November 2019 в 00:55
поделиться

Одна вещь, над которой я работал, которая помогла мне больше оценить TDD, - это NHibernate и шаблон Unit of Work . Хотя это характерно для NHibernate и .NET, мне понравилось, как это устроено. Используя TDD, вы разрабатываете что-то (UnitofWork), которое действительно полезно, а не какой-нибудь простой пример «вот как выглядит макет».

Лучше всего я изучаю концепцию, применяя ее для решения реальных задач. Я предлагаю вам взглянуть на структуру статьи и посмотреть, соответствует ли она тому, что вы ищете.

2
ответ дан 30 November 2019 в 00:55
поделиться

Вундеркинды отлично работают с метриками, подходят они им или нет!

Вы можете использовать это в своих интересах. Настройте CI-сервер и завершите сборку сбой, когда покрытие кода упадет ниже 50 процентов. Сообщите им, что порог будет повышаться на 10 процентов каждый месяц, пока не достигнет 90. Возможно, вы могли бы использовать некоторые ловушки фиксации, чтобы они не могли проверять код для начала, но я никогда не пробовал это сам.

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

Это будет только убедитесь, что они тестируют свой код, а не то, насколько хорошо они тестируют свой код, ни пишут ли они тесты первыми. Тем не менее, это настоятельно поощряет (или заставляет) их включать тестирование в свой повседневный процесс разработки.

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

2
ответ дан 30 November 2019 в 00:55
поделиться

Вы можете попробовать посетить (или устроить его, если поблизости нет никого!) coding dojo

Я посетил одно такое упражнение, и было весело изучать TDD.

5
ответ дан 30 November 2019 в 00:55
поделиться

Книги всегда являются хорошим ресурсом - даже если они не бесплатны - они могут стоить вашего времени на поиск хороших бесплатных ресурсов - за те деньги, которые стоят эти книги.

"Разработка на основе тестов пример " Кента Бека.

" Разработка через тестирование в Microsoft .NET " Джеймса В. Ньюкирка и Алексея А. Воронцова

, пожалуйста, не стесняйтесь добавлять в этот список

3
ответ дан 30 November 2019 в 00:55
поделиться

Найдите кого-нибудь с опытом и поговорите с ним. Если местной группы разработчиков нет, создайте ее.

Вам также следует попытаться зайти слишком далеко, чтобы начать, а затем научиться отступать. Например, вся эта фикция началась, когда кто-то спросил: «А что, если мы будем программировать без геттеров?»

Наконец, научитесь «слушать тесты». Если тесты выглядят ужасно, подумайте, не виноват ли код, а не ваша методика тестирования.

1
ответ дан 30 November 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: