JavaScript代码分析 - 柏拉图的可维护性评级

时间:2014-11-24 10:46:29

标签: 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));

感谢您的帮助/建议!

1 个答案:

答案 0 :(得分:3)

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

您还依赖于jquery只是在init中进行选择并在搜索中选择一个自定义容器。初始选择可以作为参数传递,并且对自定义类的支持看起来像是一个可能被添加到事后支持某事的黑客攻击(为什么?因为函数名{{1}然后支持任何可能与搜索无关的任意类。

这些改变都会改善"可维护性"但是,再次,~70不一定是个问题。分数只是重要的,因为它们与应用程序中的其他代码和开发人员的舒适程度相关。

也就是说,这段代码很简单,但随着一个解决方案的添加,很容易失控。通用动画解决方案将是一种抽象。使用css动画并简单地按惯例或某些应用程序级框架添加类将是另一个;例如,基于空虚或其他方式管理其自身状态的一些主干组件,角度指令或web组件。那些单独的实现也很可能是可维护的,"得分方面,但它限制了范围和潜在的未来蠕变,这很重要。

如果文件永远不会更改,并且在编写后永远不需要理解,则可维护性无关紧要。如果文件将经历许多更改或需要完全理解以便解决所有未来的代码,那么可维护性是一个优先事项。