Cloud Code Functions
使用Plato生成Back4App云代码函数复杂性报告指南
9 分
如何创建一个显示您的云代码复杂性的报告 介绍 本节将教您如何使用 plato 生成您的云代码的代码复杂性报告。 云代码必须从设计上高效。由于它被调用的次数非常多,稍微差一点的性能可能会成为一个巨大的问题,并严重影响您的生产环境。 如果您花时间高效地设计您的云代码,您将能够使用更小的服务器处理更多的请求,这可以随着时间的推移带来巨大的节省。 另一方面,设计不良的云代码只能在更大、更昂贵的机器上扩展,这也有其局限性。这种情况可能会导致重写代码的必要性,并随着时间的推移增加开支。 请花时间进行测试、负载测试并不断检查代码复杂度的报告。 前提条件 要完成本教程,您需要: 一个安装了 node js 的本地环境,以便应用单元测试。您可以按照 官方 nodejs 教程 在终端成功安装 node js。 在 back4app 创建的应用。 按照 创建新应用教程 学习如何在 back4app 创建应用。 与项目配置的 back4app 命令行工具。 按照 设置云代码教程 学习如何为项目设置云代码。 首先,我们需要谈谈 plato 我们通常通过创建一组较小的函数来开始开发,这些函数将一个大问题分解为更小、更易处理的问题。 这种方法通常是可行的,这些初始较小的函数随着时间的推移而增长,进行更复杂的操作并处理更多的数据。 随着您应用中的数据增长,计算密集型任务(如循环和递归调用)被越来越多地调用,这往往会减慢应用程序的速度。在严重的情况下,它甚至可能完全冻结应用程序。 这就是 plato 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 , 但根据您的代码,您可以有更多文件。 向下滚动到 文件 文件 部分,点击您想要打开的文件名(在我的情况下是 main js)。这将打开该文件的报告 可维护性是一个介于0到100之间的值,表示维护代码的相对容易程度。较高的值意味着更好的可维护性。 难度度量与编写或理解程序的难度相关。 估计错误是halstead交付的错误,是对实现中错误数量的估计。 功能权重有两个指标: 按复杂性:该指标计算代码块中不同路径的数量。较低的值更好。 按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 这样的工具来检查你的代码复杂度,并不断重构云代码以尽可能快和高效,可以在长时间内节省大量成本。 你和所有开发者都应该在开发过程中包含这一步或类似的步骤,以确保你在处理请求时获得最大的价值。