大家好,感谢邀请,今天来为大家分享一下怎样辨别网站源码分享的问题,以及和网站源码怎么查的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
随着业务需求的不断迭代,在一个项目中不可避免地会出现类似的需求。作为一名研发一线的学生,你应该经历过这样的情况。遇到类似的实现时,很多时候直接复制使用功能相同的功能或组件。当然,很大一部分原因是需求的开发时间比较紧。为了快速完成PM的要求,这样做了。
但是,这样长期积累的重复代码,会让后面的项目越来越难维护。一方面,重复的代码会使项目本身迅速臃肿,可读性变差;另一方面,如果要进行功能整改或扩展,是否应该同步更改这么多地方的相同代码?如果要改变,这也是一笔不菲的研发成本,最终会导致项目的可维护性越来越差。因此,代码重复在一定程度上影响了项目的整体质量。
在质量工程建设体系中,重复代码的检测也是一个重要环节。今天的课,我将和大家讨论如何检测和消除前端项目中的重复代码。
例子
让我们用一个简单的例子切入本课的主题。假设我目前有一个React项目,有两个页面,一个是about页面,另一个是主页,两者都有一个功能相同的table组件。代码如下所示:
//aboutpage\nimportReactfrom&39;;\nexportdefault()=>{\nconsole.log(&39;);\nreturn<>\n<tableborder=&34;>\n<tr>\n<th>Month</th>\n<th>Savings</th>\n</tr>\n</table>\nthisisaboutpage\n</>\n}
about页面有一个table组件,再看首页,也可以看到一个table组件。
//homepage\nimportReactfrom&39;;\nexportdefault()=>{\nconsole.log(&39;);\nreturn<>\n<tableborder=&34;>\n<tr>\n<th>Month</th>\n<th>Savings</th>\n</tr>\n</table>\nthisishomepage\n</>\n}
如何检测具有工程能力的重复代码?
目前开源社区有一个开源项目jscpd,对重复代码检测能力有很好的支持。
接下来,我将教你如何使用jscpd来检测项目中的重复代码。一般来说,在一个工程系统中,一系列的原子服务构成了一个完整的工程检测环节。每个原子服务的实现大多是脚本的实现,可能是Node脚本也可能是Python脚本等,我们不需要关心技术栈的具体实现,只要能实现功能即可。这里我以上面提到的两个页面为例,向大家介绍如何通过两种方式使用jscpd检测项目中的重复代码。
第一种方式是直接在控制台输入sell命令。这种方式需要全局安装jscpd依赖,命令为:npmi-gjscpd。安装完成后,可以进入React项目的根路径,执行如下命令:
jscpd-p&34;-k15-l5
这里我先解释一下上面的参数。
“-p”是指通过glob模式对所有文件进行正则匹配,那么“src/**/*.js”就是检测src目录下所有后缀为js的文件;
“-k”是指代码标签中标记的最小重复次数。可以把token理解为一个词,这里设置为15,那么只有15个以上的词才会检测到代码片段;
“-l”是指要检测的最少代码行数。这里设置为5。可以理解,只对5行以上的代码进行检测。
如果想了解更多参数,可以在命令行执行jscpd-h查看。我将在这里向您展示执行结果:
从这个结果可以看出,最终结果检测到两个文件中有重复代码,共8行,56个token。
当然,重复的代码可以是组件、函数或类。情况很多,需要具体情况具体分析。
结论
重复代码的检测是质量工程的必要组成部分。忽略这部分可能会使我们的代码可读性降低,并且更难维护。我这里总结了几点,大家可以参考一下。
封装组件非常适合我们上面提到的例子。对于在多个组件中使用相同能力的子组件,我们应该考虑将这些相同的组件封装成公共组件,这样在使用其他组件时,可以直接引用公共组件。.后续维护也比较方便。如果组件发生变化,则可以统一更改公共组件。
抽取函数,简单来说就是将同一个实现模块抽取成一个函数,方便复用。如果是相同的两个函数,可以直接解压。如果两个功能不一样,可以将相同部分从不同部分中分离出来,将相同部分提取为一个功能,不同部分保留。
方法推广,如果多个子类有类似的实现,我们可以将方法提前到父类统一实现,每个子类可以继承一次。这样也可以达到消除重复代码的效果。
谢谢阅读。
关注七爪网,获取更多APP/小程序/网站源码资源!
如果你还想了解更多这方面的信息,记得收藏关注本站。
