JavaScript 代码分析 - Plato 的可维护性评级

标签 javascript analysis plato

我使用 JavaScript 一段时间了,刚刚开始使用 Plato 分析我的代码。 。我不确定它如何计算可维护性,但下面的代码返回可维护性分数 69.3。我缺少什么?尝试添加评论,但没有改变。

/*globals jQuery*/
var App = App|| {};
App.AnimateSearch = (function ($) {
    'use strict';

    var searchContainer = $('[search-container]'),
        emptySearchMessage = $('.empty-search-message');

    function animateEmptyMessage() {
        emptySearchMessage.css({
            'opacity': 0,
            'transform': 'scale(0.5)',
            '-webkit-transform': 'scale(0.5)',
            '-moz-transform': 'scale(0.5)'
        });

        emptySearchMessage.fadeIn().animate({
            'opacity': 1,
            'transform': 'scale(1)',
            '-webkit-transform': 'scale(1)',
            '-moz-transform': 'scale(1)'
        }, 300);
    }

    function animateSearch(customClass) {
        searchContainer = typeof customClass === 'undefined' ? searchContainer : $(customClass);
        searchContainer.css({ 'margin-top': '100px', 'opacity': 0 });

        setTimeout(function () {
            searchContainer.stop().animate({ 'margin-top': '0', 'opacity': 1 }, 300);
        }, 500);
    }

    return {
        animateEmptyMessage: animateEmptyMessage,
        animateSearch: animateSearch
    };
}(jQuery));

感谢您的帮助/建议!

最佳答案

可维护性是许多不同参数的函数。 70 左右的可维护性通常是完全可以接受的。 ~70+ 很好,30-70 处于警戒区,低于 30 通常会出现问题。如果您想提高分数,请尝试将其中一些 css 属性移动到带有动画的 css 类中。

您还可以简单地依赖 jquery 在 init 中进行选择并在搜索中选择自定义容器。初始选择可以作为参数传递,并且对自定义类的支持似乎有点像黑客,可能是为了支持事后的某些内容而添加的(为什么?因为函数名称 animateSearch 然后支持任何可能与搜索有关或无关的任意类)。

这两项更改都会提高“可维护性”,但同样,~70 不一定是问题。分数仅在与应用程序中的其他代码以及开发人员的舒适度相关时才重要。

也就是说,这段代码很简单,但在添加一次性解决方案时很容易失控。通用动画解决方案是一种抽象。使用 CSS 动画并按照惯例简单地添加类或一些应用程序级框架将是另一种方式;例如,一些基于空或其他方式管理自己状态的 Backbone 组件、 Angular Directive(指令)或 Web 组件。这些单独的实现也很可能是“可维护的”,但它限制了范围和潜在的 future 蔓延,这一点很重要。

如果一个文件在写入后永远不会改变并且永远不需要被理解,那么可维护性就无关紧要了。如果一个文件将经历许多更改或需要完全理解才能处理所有 future 的代码,那么可维护性是一个优先事项。

关于JavaScript 代码分析 - Plato 的可维护性评级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102978/

相关文章:

javascript 将参数作为对象或类似的东西传递

javascript - 如何使用 JQUERY 在 Bootstrap Modal 中创建一个 "Edit User"表单?

javascript - 使用 ES6 在 React 中将一个函数传递给多个子组件

跨日志线相似性的算法分析?

algorithm - 该伪代码的大 O 是什么?

java - 使用 FFT 进行频谱分析、基频推导

visual-studio - QR分解Fortran错误

javascript - 如何从使用 jquery 动态创建的视频标签获取视频持续时间?