2

我使用 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));

感谢您的帮助/建议!

4

1 回答 1

3

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

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

这两个变化都会提高“可维护性”,但同样,~70 不一定是问题。分数很重要,因为它们与应用程序中的其他代码和开发人员的舒适度有关。

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

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

于 2014-11-24T18:38:12.200 回答