Cloud Code Functions
Анализ сложности кода в облачных функциях Back4App
10 мин
как создать отчет, показывающий сложность вашего облачного кода введение этот раздел научит вас генерировать отчет о сложности кода вашего облачного кода с помощью plato облачный код должен быть эффективным с самого начала поскольку он вызывается много раз, даже незначительное ухудшение производительности может стать огромной проблемой и негативно сказаться на вашей производственной среде если вы потратите время на эффективное проектирование вашего облачного кода, вы сможете обрабатывать больше запросов, используя меньшие серверы, что может привести к значительной экономии со временем с другой стороны, плохо спроектированный облачный код может масштабироваться только на более крупных, более дорогих машинах, что также имеет свои ограничения эта ситуация может и, вероятно, приведет к необходимости переписывания кода и дополнительным расходам со временем пожалуйста, не торопитесь с тестированием, нагрузочным тестированием и постоянной проверкой отчетов о сложности кода предварительные требования чтобы завершить этот учебник, вам потребуется локальная среда с установленным node js для применения модульных тестов вы можете следовать официальному учебнику nodejs для успешной установки node js в вашем терминале приложение, созданное на back4app следуйте учебнику по созданию нового приложения чтобы узнать, как создать приложение на back4app back4app command line, настроенный с проектом следуйте учебнику по настройке cloud code чтобы узнать, как настроить облачный код для проекта прежде всего, нам нужно поговорить о платоне обычно мы начинаем разработку, создавая меньший набор функций, которые разбивают большую проблему на более мелкие, более простые для решения этот подход обычно приемлем, и эти начальные меньшие функции со временем развиваются, выполняя более сложные операции и обрабатывая больше данных по мере роста данных в вашем приложении вычислительно интенсивные задачи, такие как циклы и рекурсивные вызовы, вызываются все чаще, что, как правило, замедляет приложение в серьезных случаях это может даже полностью заморозить приложение вот здесь и появляется платон https //www npmjs com/package/plato plato https //www npmjs com/package/plato — это инструмент визуализации исходного кода javascript, статического анализа и сложности, который генерирует отчеты, показывающие, насколько сложным становится ваше приложение и где необходимо внести исправления, чтобы потенциально ускорить процессы 1 установка plato если у вас установлены nodejs https //nodejs org/en/download/package manager/ и npm https //www npmjs com/ в вашей системе, установка plato https //www npmjs com/package/plato так же проста, как ввод следующей команды если нет, пожалуйста, установите их перед продолжением 2 запуск plato запуск plato https //www npmjs com/package/plato после установки состоит в том, чтобы ввести следующую команду из директории, где находится ваш cloud code опции означают r рекурсивный, что означает, что он будет заходить в директории и поддиректории в поисках файлов d myreportfolder (выходной) директория plato создаст директорию с именем myreportfolder myreportfolder , где он будет хранить свои результаты t “my report for this app” заголовок plato назовет этот отчет my report for this app my report for this app это полезно для создания нескольких отчетов со временем и отслеживания x json исключить json файлы вы можете сказать plato игнорировать типы файлов, чтобы он работал быстрее js искать все с расширением js для оценки 3 получение результатов в myreportfolder myreportfolder созданной командой выше, вы найдете index html index html , содержащий отчет откройте этот файл в браузере, и вы найдете что то вроде этого в моем случае у меня был только файл с именем main js main js , но в зависимости от вашего кода у вас может быть больше файлов прокрутите вниз до раздела files files и нажмите на имя файла, который вы хотите открыть (main js в моем случае) это откроет отчет для этого файла поддерживаемость — это значение от 0 до 100, которое представляет относительную легкость поддержки кода высокое значение означает лучшую поддерживаемость мера сложности связана со сложностью программы для написания или понимания оценка ошибок — это количество ошибок в реализации, оцененное по доставленным ошибкам халстеда функция веса имеет две метрики по сложности эта метрика считает количество различных путей через блок кода более низкие значения лучше по sloc строки исходного кода / логические строки кода теперь вы можете прокрутить вниз и посмотреть предупреждения и возможные исправления, которые предлагаются в моем случае это говорит о том, что синтаксис стрелочной функции (=>) доступен только в es6 (используйте 'esversion 6') синтаксис стрелочной функции (=>) доступен только в es6 (используйте 'esversion 6') , что не является проблемой но давайте добавим немного очень неэффективного кода в эту функцию и переоценим 1function getsquarerootof(numberone, numbertwo, numberthree){ 2 var finalresult; 3 4 var i = 0; 5 var j = 0; 6 var k = 0; 7 8 for (i = 0; i < 100; i ++){ 9 for (j = 0; j < 100; i ++){ 10 for (k = 0; k < 100; k++){ 11 var resultone = getsquarerootof(numberone); 12 var resulttwo = getsquarerootof(numbertwo); 13 var resultthree = getsquarerootof(numberthree); 14 finalresult = resultone + resulttwo + resultthree; 15 } 16 } 17 } 18} и оцените результат как мы видим, сложность этой функции равна 4, что нормально чем выше число, тем более сложной является функция, и тем больше вы должны убедиться, что она эффективна plato https //www npmjs com/package/plato также предупредит вас о пропущенных точках с запятой и других потенциальных ошибках javascript заключение наличие инструмента, такого как plato https //www npmjs com/package/plato для проверки сложности вашего кода и постоянного переработки облачного кода, чтобы он был как можно быстрее и эффективнее, может привести к огромной экономии со временем вы и все разработчики должны включить этот шаг или что то подобное в ваш процесс разработки, чтобы гарантировать, что вы получаете максимальную отдачу от ваших затрат на обслуживание запросов