Метрики для измерения успешного [закрытого] рефакторинга

Почему эти данные не будут храниться в переменной file_name?

Поскольку isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

$countOfGoodImages = 0;
if ( !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image']) ) { foreach (

Почему эти данные не будут храниться в переменной file_name?

Поскольку isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'] as $imageValue) { if ( isImageIsGoodForMe($imageValue) ) { $countOfGoodImages++; } } } if ($countOfGoodImages) { // good images } else { // use old images }
FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image']) целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image']) всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с !empty(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])
целым числом из isset(

Почему эти данные не будут храниться в переменной file_name?

Поскольку [111] всегда верно при вводе формы, даже если нет прикрепленных файлов.

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

Самый простой способ - просто проверить количество элементов в массиве с [112] целым числом из [113]

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]FILES['image'])

. Но вы также можете проверить входные изображения, если они являются правильными файлами, и только затем перейти к [114 ] заявление.

Например:

[110]
9
задан Dave Schweisguth 20 March 2016 в 00:24
поделиться

7 ответов

Будет ли запуск findbugs, CRAP или checkstyle до и после рефакторинга быть полезным способом проверки, действительно ли код улучшен, а не просто изменен?

На самом деле, как я подробно изложили в вопросе «Что такое увлечение метриками кода?» , тренд любых метрик (findbugs, CRAP и т. д.) является истинной добавленной стоимостью метрик.
Он (эволюция метрик) позволяет вам расставить приоритеты основного действия по исправлению, которое вам действительно нужно выполнить в своем коде (в отличие от слепой попытки соблюдать каждую метрику)

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


Сэл добавляет в комментариях:

Реальная проблема заключается в проверке того, какой код добавляет добавленную стоимость, а не просто добавляет изменение

] Для этого очень важно охватить тестирование, потому что только тесты (юнит-тесты, но и более крупные «функциональные тесты») дадут вам правильный ответ.
Но рефакторинг в любом случае не должен осуществляться без четкой цели. Делать это только потому, что он будет «более элегантным» или даже «более легким в обслуживании», само по себе недостаточно для того, чтобы изменить код.
Должны быть другие меры, такие как некоторые ошибки, которые будут исправлены в процессе, или некоторые новые функции, которые будут реализованы намного быстрее в результате «переработанного» кода.
Короче говоря, добавленная стоимость рефакторинга измеряется не только с помощью метрик, но также должна оцениваться по целям и / или вехам.

4
ответ дан 4 December 2019 в 11:08
поделиться

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

Хотя процесс проверки работоспособного кода может творить чудеса.

5
ответ дан 4 December 2019 в 11:08
поделиться

Размер кода. Все, что уменьшает его, не нарушая функциональность, является улучшением в моей книге (удаление комментариев и сокращение идентификаторов, конечно, не будет учитываться)

2
ответ дан 4 December 2019 в 11:08
поделиться

Количество неудачных юнит-тестов должно быть меньше или равно нулю:)

5
ответ дан 4 December 2019 в 11:08
поделиться

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

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

Я бы держался подальше от метрик для измерения успешности рефакторинга (кроме #unit test failures == 0). Вместо этого я бы пошел с обзорами кода.

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

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

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

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

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

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

Помните, в проворном, методы управления, определенные в SCRUM, обеспечат вам совместную работу и обеспечат понимание потребностей делового партнера, а разработанный вами код отвечает бизнес-потребностям. Однако без надлежащей инженерной практики (как определено в Extreme Programming) ваш проект потеряет устойчивый темп. Многие гибкие проекты, в которых не использовались инженерные практики, нуждались в спасении. С другой стороны, команда, которая была дисциплинирована и использовала как управленческую, так и инженерную гибкую практику, могла поддерживать доставку на неопределенный срок.

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

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

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

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

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

0
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

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