在指令中命名匿名函数有什么意义?

时间:2016-10-06 16:21:36

标签: javascript angularjs

我遇到了一些标准,基本上说应该指定角度指令和控制器中的所有函数。我不是在谈论控制器或指令中的命名函数,我在调用指令的行中讨论。

我通常会这样写的例子:

angular.module('myModule',[])
.directive('myDirectiveName', function (){
    return{
        controller: function($scope){
            //some code
        }
    }
});

本指南如何要求撰写:

angular.module('myModule',[])
.directive('myDirectiveName', function directiveInit(){
    return{
        controller: function controllerInit($scope){
            //some code
        }
    }
});

显然,这里的差异是directiveInitcontrollerInit

这有什么意义?是为了更好的调试错误?我知道不需要它。这会让事情变得更容易吗?这是一种角度特定的做法吗?

编辑:我可以使用更好的标题吗?我觉得这个标题不能准确地反映我的要求。

1 个答案:

答案 0 :(得分:3)

即使看起来不需要命名,也能很好地命名功能,这是可维护性修复的一种做法。

其中之一是使函数可跟踪,用于调试和分析工具。在分析代码以跟踪性能问题时,您最好知道函数的名称,否则您只会看到anonymous function,这对您的性能分析活动没什么帮助。

其他原因是代码可读性的改进,特别是对于团队而言。例如,在angularjs(v1.x)中,指令经常被声明为:

(function(){

    angular
        .module('myModule')
        .directive('myDirectiveName', myDirectiveName);

    function myDirectiveName(){

        function controllerInit($scope){
            //some code
        }

        return{
            controller: controllerInit
        }
    }
})();

在我看来,这比匿名指令构造函数更容易阅读。此外,它更容易处理封装和东西。