Тест-> Код-> Осуществляет рефакторинг, когда мы должны запустить рефакторинг?

Я как бит, подозрительный к Вашей подкачке, находящейся на sdb1.... Я мог быть неправым, но.... Я на самом деле не сделал системы, в которой ОС распространена по двум жестким дискам, как является Вашим. Домой на другом диске, да, но подкачке на другом диске, я просто не уверен. Тем более, что первый раздел.

Вы могли бы попытаться загрузиться в опцию 'Try Ubuntu' на карте с интерфейсом USB и шпионить вокруг там. Вы могли также попытаться переустановить личинку оттуда и обновить ее. Я уверен с Вами, опыт, который Вы будете знать, как сделать это.

5
задан alex2k8 30 August 2009 в 23:13
поделиться

5 ответов

TDD - отличный инструмент, который поможет вам не сбиться с пути / выполнить задачу. Проблема с:

«Тест на сбой записи» -> «Код / рефакторинг» -> «Тест на сбой записи»

, который вы предлагаете, может легко стать:

«Тест на сбой записи» -> «Рефакторинг» "->" Код "->" Тест с ошибкой записи "

или затем

" Тест с ошибкой записи "->" Рефакторинг "->" Рефакторинг "->" Рефакторинг "->" Код "->" Запись провал теста "

, чего вы хотите избежать. Выполняя рефакторинг в начале реализации, вы занимаетесь спекулятивной разработкой и не достигаете цели сеанса кодирования. Легко пойти по сторонам и построить то, что вам не обязательно нужно. Если функция работает и тесты проходят, гораздо проще решить, когда пора прекратить рефакторинг. И вы можете остановиться в любой момент, потому что ваши тесты пройдены.

Кроме того, вы не хотите проводить рефакторинг, когда ваши тесты не зеленые.

Еще пара мелких точек:

  1. Я думаю, что большая часть В литературе есть несколько иное определение рефакторинга. Это не «некоторые изменения в системе» или улучшения производительности, а конкретные изменения, которые не изменяют поведение, а улучшают дизайн. Если вы согласны с этим определением, тогда улучшения производительности на самом деле не подходят: это обычные задачи разработки, требующие собственных приемочных испытаний. Я обычно пытаюсь представить их как истории для конечных пользователей, где польза от их использования очевидна. Имеет смысл?

  2. Думаю, ты ' Правильно, практика TDD не решает конкретно проблемы дизайна, выявленные во время анализа кода. (См. Другие решения этой проблемы в размышлениях и парном программировании.) Это, как правило, более серьезные межсекторальные проблемы, созданные как «долг кода», и для их периодической очистки требуется некоторое время. Это мог бы быть отдельный проект, но мне лично всегда нравится делать это как часть другой «реальной» истории. В прошлый раз, когда я сделал это, мы определили, что у нас есть проблема, но в итоге подождали несколько недель, пока у нас не появится соответствующая история, чтобы поработать над ней. Мы сначала следовали практике TDD, внедряя новую функцию, хотя и знали, что это неправильно. Но потом мы действительно поняли, что происходит и почему это было беспорядочно, а затем потратили больше времени, чем обычно, на фазу рефакторинга. Работает хорошо.

6
ответ дан 18 December 2019 в 09:08
поделиться

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

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

9
ответ дан 18 December 2019 в 09:08
поделиться

Хм ... Я обычно считаю это своего рода "внешними" рефакторинги отделены от самого цикла TDD. После завершения функции XYZ с использованием TDD необходимо иметь здоровый набор тестов, чтобы не допустить внесения ошибок посредством рефакторинга (при условии оптимального покрытия кода и т. Д.). Узкие места в производительности и трудный для понимания код в любом случае обычно возникают постфактум, так что рефакторинг на этом этапе, я думаю, был бы идеальным. Вы можете повысить производительность, упростить понимание кода и делать все, что нужно, при использовании тестов, чтобы убедиться, что вы не вносите ошибки в систему.

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

После завершения функции XYZ с использованием TDD необходимо иметь здоровый набор тестов, чтобы не допустить внесения ошибок посредством рефакторинга (при условии оптимального покрытия кода и т. Д.). Узкие места в производительности и трудный для понимания код в любом случае обычно возникают постфактум, так что рефакторинг на этом этапе, я думаю, был бы идеальным. Вы можете повысить производительность, упростить понимание кода и делать все, что нужно, при использовании тестов, чтобы убедиться, что вы не вносите ошибки в систему.

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

После завершения функции XYZ с использованием TDD необходимо иметь здоровый набор тестов, чтобы не допустить внесения ошибок в результате рефакторинга (при условии оптимального покрытия кода и т. Д.). Узкие места в производительности и трудный для понимания код в любом случае обычно возникают постфактум, так что рефакторинг на этом этапе, я думаю, был бы идеальным. Вы можете повысить производительность, упростить понимание кода и делать все, что нужно, при использовании тестов, чтобы убедиться, что вы не вносите ошибки в систему.

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

необходимо иметь здоровый набор тестов, чтобы не допустить появления ошибок посредством рефакторинга (при условии оптимального покрытия кода и т. д.). Узкие места в производительности и трудный для понимания код в любом случае обычно возникают постфактум, так что рефакторинг на этом этапе, я думаю, был бы идеальным. Вы можете повысить производительность, упростить понимание кода и делать все, что нужно, при использовании тестов, чтобы убедиться, что вы не вносите ошибки в систему.

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

необходимо иметь здоровый набор тестов, чтобы не допустить появления ошибок посредством рефакторинга (при условии оптимального покрытия кода и т. д.). Узкие места в производительности и трудный для понимания код в любом случае обычно возникают постфактум, так что рефакторинг на этом этапе, я думаю, был бы идеальным. Вы можете повысить производительность, упростить понимание кода и делать все, что нужно, при использовании тестов, чтобы убедиться, что вы не вносите ошибки в систему.

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

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

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

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

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

1
ответ дан 18 December 2019 в 09:08
поделиться

Есть ли неподходящее время для рефакторинга, кроме недели или двух до основного выпуска?

1
ответ дан 18 December 2019 в 09:08
поделиться

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

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

1
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

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