“Почему” позади правил PMD

Кажется, работает, когда я непосредственно указываю весь путь localhost: 3003 / picture.png в src элемента video

28
задан Karl Richter 4 October 2018 в 21:22
поделиться

4 ответа

В каждом случае правило может зависеть от конкретных обстоятельств или просто «вкуса».

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

Для OnlyOneReturn есть несколько способов посмотреть на это (с ярыми сторонниками позади каждого), но все они в основном сводятся к вкусу.

Для вашего примера, сторонники OnlyOneReturn хотят иметь такой код:

public int performAction(String input) {
    int result;
    if (input.equals("bob")) {
        result = 1;
    } else {
        result = 2;
    }
    return result;
}

Вместо:

public int performAction(String input) {
    if (input.equals("bob")) {
        return 1;
    } else {
        return 2;
    }
}

Как вы можете видеть, дополнительная ясность ReturnOnlyOnce может быть обсуждается.

Также см. Этот вопрос SO, который относится к реализации в циклах .

19
ответ дан Community 28 November 2019 в 03:49
поделиться

Каждое правило находится в наборе правил PMD, который может дать вам подсказку о причинах, лежащих в основе правила (если это не объяснено подробно на самой странице набора правил).

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

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

1
ответ дан Avi 28 November 2019 в 03:49
поделиться

Эта статья Сравнение средств поиска ошибок для Java , "Ник Рутар, Кристиан Алмазан и Джефф Фостер сравнивают несколько программ проверки ошибок для Java ..." - FindBugs Documents and Publications . PMD выглядит более многословным.

Приложение: как предлагают авторы,

«все инструменты выбирают разные компромиссы между генерацией ложных срабатываний и ложных отрицаний».

В частности, AvoidInstantiatingObjectsInLoops не может вообще быть ошибкой, если такова цель. Он включен, чтобы помочь Избегать создания ненужных объектов . Аналогичным образом OnlyOneReturn носит наводящий характер. Множественные возвраты представляют собой форму goto , иногда считающуюся вредной , но разумно используемую для улучшения читабельности.

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

Как отмечено здесь , более поздние версии PMD поддерживают улучшенную настройку при интеграции в процесс сборки.

5
ответ дан 28 November 2019 в 03:49
поделиться

Вы можете заглянуть на домашнюю страницу PMD, здесь правила объясняются подробно и часто с объяснением причин. Сайт структурирован по группам правил, вот ссылка на basic-rules: http://pmd.sourceforge.net/rules/basic.html

1
ответ дан 28 November 2019 в 03:49
поделиться
Другие вопросы по тегам:

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