• <small id='TrSo5'></small><noframes id='TrSo5'>

    <tfoot id='TrSo5'></tfoot>
      <legend id='TrSo5'><style id='TrSo5'><dir id='TrSo5'><q id='TrSo5'></q></dir></style></legend>

        • <bdo id='TrSo5'></bdo><ul id='TrSo5'></ul>

      1. <i id='TrSo5'><tr id='TrSo5'><dt id='TrSo5'><q id='TrSo5'><span id='TrSo5'><b id='TrSo5'><form id='TrSo5'><ins id='TrSo5'></ins><ul id='TrSo5'></ul><sub id='TrSo5'></sub></form><legend id='TrSo5'></legend><bdo id='TrSo5'><pre id='TrSo5'><center id='TrSo5'></center></pre></bdo></b><th id='TrSo5'></th></span></q></dt></tr></i><div id='TrSo5'><tfoot id='TrSo5'></tfoot><dl id='TrSo5'><fieldset id='TrSo5'></fieldset></dl></div>
      2. 复杂性大于 AngularJS 控制器中的授权(SonarLint 问题)

        Complexity greater than authorized in AngularJS Controller (SonarLint issue)(复杂性大于 AngularJS 控制器中的授权(SonarLint 问题))
        <legend id='umrsY'><style id='umrsY'><dir id='umrsY'><q id='umrsY'></q></dir></style></legend>
          • <bdo id='umrsY'></bdo><ul id='umrsY'></ul>
                <tbody id='umrsY'></tbody>
              <tfoot id='umrsY'></tfoot>

                <small id='umrsY'></small><noframes id='umrsY'>

                <i id='umrsY'><tr id='umrsY'><dt id='umrsY'><q id='umrsY'><span id='umrsY'><b id='umrsY'><form id='umrsY'><ins id='umrsY'></ins><ul id='umrsY'></ul><sub id='umrsY'></sub></form><legend id='umrsY'></legend><bdo id='umrsY'><pre id='umrsY'><center id='umrsY'></center></pre></bdo></b><th id='umrsY'></th></span></q></dt></tr></i><div id='umrsY'><tfoot id='umrsY'></tfoot><dl id='umrsY'><fieldset id='umrsY'></fieldset></dl></div>
                • 本文介绍了复杂性大于 AngularJS 控制器中的授权(SonarLint 问题)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我将 SonarLintEclipse 一起使用,并且我正在使用 AngularJS 编写应用程序.我的控制器有问题,所以我试图清理一下以使其更清晰,然后 SonarLint 弹出了一个问题:

                  I use SonarLint with Eclipse, and I'm codding an application using AngularJS. I had a problem with a controller so I was trying to clean it a bit to see clearer, and then SonarLint popped me up an issue :

                  函数的复杂度为 11,大于授权的 10.

                  Function has a complexity of 11 which is greater than 10 authorized.

                  这是我的控制器的代码:

                  And here's the code of my controller :

                  app.controller('LauncherCtrl', function ($scope, $http) {
                  
                      $scope.genStatus = "stopped";
                  
                      $scope.startgenerator = function() {
                          $http.get('/start').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.resumegenerator = function() {
                          $http.get('/resume').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.suspendgenerator = function() {
                          $http.get('/suspend').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.stopgenerator = function() {
                          $http.get('/stop').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.updateStatus = function() {              
                          $http.get('/status').success(function (response) {
                                $scope.genStatus = response.data;
                          });
                      };
                  
                      $scope.updateStatus();
                  });
                  

                  有什么问题吗?我认为这个问题与太多的嵌套循环/函数有关,但据我所知,它不是(除了调用更新的函数 start/stop/resume/pause,但它不是复杂性 11,是吗??).+ 我仔细检查了括号/括号,我认为问题不在于那里.

                  Is there something wrong with it ? I assume this issue would be about too much nested loops/functions, but as far as I can see it's not (apart from the functions start/stop/resume/pause which are calling update, but it isn't complexity 11, is it ?). + I double checked the brackets/parenthesis, I don't think the problem comes from there.

                  推荐答案

                  如果你想消除复杂性,你可以做一个函数:

                  If you want to remove complexity you can make one function :

                      $scope.startgenerator = function() {
                          $http.get('/start').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.resumegenerator = function() {
                          $http.get('/resume').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.suspendgenerator = function() {
                          $http.get('/suspend').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.stopgenerator = function() {
                          $http.get('/stop').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  

                  $scope.generatorAction = function(action) {
                      $http.get('/' + action).success(function () {
                          $scope.updateStatus();
                      });
                  };
                  

                  然后像这样使用它:

                  $scope.generatorAction('stop');
                  

                  或者使用处理您的http请求的服务,这是一个更好的做法.

                  Or use a service that handle your http request, It's a better practice.

                  我在我的 Angular 应用程序中使用这个样式指南:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

                  I'm using this styleguide for my angular applications : https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

                  为您的 http 请求创建一个简单的服务:

                  Creating a simple service for your http request :

                  (function() {
                    'use strict';
                  
                    angular
                      .module('yourModuleName')
                      .factory('generator', generatorFactory);
                  
                    function generatorFactory($http) {
                  
                       var service = {
                          start: start,
                          resume: resume,
                          suspend: suspend,
                          stop: stop
                       }
                  
                       return service;
                  
                       function start() {
                          return $http.get('/start');
                       }
                  
                       function resume() {
                          return $http.get('/start');
                       }
                  
                       function suspend() {
                          return $http.get('/suspend');
                       }
                  
                       function stop() {
                          return $http.get('/stop');
                       }
                    }
                  
                  })();
                  

                  然后在你的控制器中:

                  app.controller('LauncherCtrl', function ($scope, generator, $http) {
                  
                      $scope.genStatus = "stopped";
                  
                      $scope.startgenerator = function() {
                          generator.start().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.resumegenerator = function() {
                          generator.resume().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.suspendgenerator = function() {
                          generator.suspend().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.stopgenerator = function() {
                          generator.stop().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.updateStatus = function() {              
                          $http.get('/status').success(function (response) {
                                $scope.genStatus = response.data;
                          });
                      };
                  
                      $scope.updateStatus();
                  });
                  

                  首先,您的应用程序似乎需要更多代码和更复杂,但如果您需要在其他页面或组件/指令中停止生成器,您只需注入生成器"服务并执行 generator.stop(); 并且通过这样做,如果有一天你的端点 url 改变了,你只需要在你的服务中改变它们.

                  First it seems to take more code and more complexity to your app, but if you need to stop your generator in an other page or in a component/directive, you just have to inject your 'generator' service and do generator.stop(); and by doing this, if one day your endpoint url changed, you only have to change them in your service.

                  这篇关于复杂性大于 AngularJS 控制器中的授权(SonarLint 问题)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  quot;Status Code:200 OK (from ServiceWorker)quot; in Chrome Network DevTools?(“状态码:200 OK(来自 ServiceWorker)在 Chrome 网络开发工具中?)
                  How to set a header for a HTTP GET request, and trigger file download?(如何为 HTTP GET 请求设置标头并触发文件下载?)
                  Adding custom HTTP headers using JavaScript(使用 JavaScript 添加自定义 HTTP 标头)
                  SQL Query DocumentDB in Azure Functions by an integer not working(通过整数在 Azure Functions 中 SQL 查询 DocumentDB 不起作用)
                  Azure Functions [JavaScript / Node.js] - HTTP call, good practices(Azure Functions [JavaScript/Node.js] - HTTP 调用,良好实践)
                  Azure Functions - Import Custom Node Module(Azure Functions - 导入自定义节点模块)
                    <bdo id='R9c4g'></bdo><ul id='R9c4g'></ul>
                      <legend id='R9c4g'><style id='R9c4g'><dir id='R9c4g'><q id='R9c4g'></q></dir></style></legend>

                        <i id='R9c4g'><tr id='R9c4g'><dt id='R9c4g'><q id='R9c4g'><span id='R9c4g'><b id='R9c4g'><form id='R9c4g'><ins id='R9c4g'></ins><ul id='R9c4g'></ul><sub id='R9c4g'></sub></form><legend id='R9c4g'></legend><bdo id='R9c4g'><pre id='R9c4g'><center id='R9c4g'></center></pre></bdo></b><th id='R9c4g'></th></span></q></dt></tr></i><div id='R9c4g'><tfoot id='R9c4g'></tfoot><dl id='R9c4g'><fieldset id='R9c4g'></fieldset></dl></div>

                        <small id='R9c4g'></small><noframes id='R9c4g'>

                          <tbody id='R9c4g'></tbody>
                          • <tfoot id='R9c4g'></tfoot>