Рассчитать цикломатическую сложность для JavaScript [закрыто]
Проблема с вопросом на Stack Overflow
Я столкнулся с проблемой, пытаясь найти инструменты для расчета цикломатической сложности в Javascript. Я использовал этот метрик раньше при работе с серверным кодом, и хотел бы применять его и к клиентскому Javascript, который я пишу.
Однако мой вопрос был закрыт как не соответствующий правилам Stack Overflow. В частности, мне рассказали, что вопросы, которые требуют рекомендации о книгах, инструментах или других ресурсах, считаются оффтопиком и могут приводить к появлению субъективных ответов и спама.
Может ли кто-то объяснить, как правильно сформулировать свой вопрос или предоставить информацию о том, где я могу найти подходящие инструменты для расчета цикломатической сложности в Javascript, не нарушая правил сайта?
3 ответ(ов)
Действительно, цикломатическая сложность рассчитывается на основе количества ключевых слов, таких как "if", "switch", "while", "for", "break" и т.д. Поэтому любые инструменты, работающие с C, подойдут для этой задачи, например, Sourcemonitor: http://www.campwoodsw.com/sourcemonitor.html.
Что касается JavaScript, то здесь важно помнить, что при попытках модульного разделения кода вы можете столкнуться с ухудшением производительности. Поэтому рекомендую подходить к этому с осторожностью 😉
Правка: Я действительно не понимаю, что происходит с этой реакцией! Я снова получаю минус, хотя в своем ответе предлагаю хороший инструмент для расчета цикломатической сложности в JavaScript, который действительно работает отлично.
Что касается второго утверждения, я лишь поделился мнением, основанным на опыте. Я не говорю "не модульно организовывайте свой JS-код", я лишь предлагаю "обращать внимание на это", поскольку часто это связано с компромиссом между скоростью. Когда я говорю о скорости, имеется в виду, что два типа замедления могут произойти: во время загрузки и во время исполнения (это важно на медленных устройствах, таких как PDA или смартфоны).
Инструменты вроде этого часто заставляют разработчиков писать больше кода, стремясь к снижению индекса, но в JavaScript больше кода может привести к замедлениям, и чрезмерное использование таких инструментов может быть вредным. Безусловно, эти инструменты могут дать подсказки о том, где ваш код можно улучшить, но вам необходимо уметь работать с инструментом и не полагаться на него вслепую.
Так что, если вы снова проголосуете против, пожалуйста, оставьте комментарий, объясняющий вашу позицию — обсуждение только выиграет от этого! Спасибо и извините за эмоции.
Вышла новая версия http://jshint.com, и в ней появился весьма полезный калькулятор цикломатической сложности. Это улучшение позволяет более точно анализировать сложность вашего кода и помогает выявлять потенциальные проблемные участки. Рекомендую попробовать!
Сейчас также доступен инструмент Yardstick: https://github.com/calmh/yardstick.
Он пытается вычислить цикломатическую сложность для идиоматического JavaScript, обрабатывая больше случаев, чем, например, jscheckstyle.
Где найти документацию по форматированию даты в JavaScript?
Как определить нажатие клавиши Esc?
Как проверить, содержит ли массив строку в TypeScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub
Как остановить Babel от трансформации 'this' в 'undefined' и добавления "use strict"