我们正在尝试应用John Papa的AngularJS Style Guide中列出的准则。强制推迟控制器逻辑
其中一个,我们就开始遵循的规则是Defer Controller Logic:
Defer logic in a controller by delegating to services and factories.
Why?: Logic may be reused by multiple controllers when placed within a service and exposed via a function.
Why?: Logic in a service can more easily be isolated in a unit test, while the calling logic in the controller can be easily mocked.
Why?: Removes dependencies and hides implementation details from the controller.
这事通过将数据检索逻辑到控制器中,而不是在服务隔离它,我们已经在过去的侵犯。
现在我想使规则尽可能严格。理想情况下,如果其中一个配置的服务作为依赖项传递给控制器,我希望角度引发错误。它是可以在角度水平上解决的问题,还是我应该尝试单独解决 - 例如,静态地使用自定义规则ESlint
?
希望得到任何见解或提示。
特别是以下控制器违反了规则,因为它使用$http
service直接:
function OrderController($http, $q, config, userInfo) {
var vm = this;
vm.checkCredit = checkCredit;
vm.isCreditOk;
function checkCredit() {
var settings = {};
return $http.get(settings)
.then(function(data) {
vm.isCreditOk = vm.total <= maxRemainingAmount;
})
.catch(function(error) {
});
};
}
另外,让我知道如果我越来越过分关注/疯狂的代码质量: )
我会尝试使用ESLint并使用防止在控制器中使用$ http/$资源的规则。我个人认为你应该在你的开发团队中进行交谈,并且在处理数据时让每个人都在同一页面上。 –