我们正在尝试应用 John Papa 的AngularJS 样式指南中列出的指南。
我们开始遵循的规则之一是延迟控制器逻辑:
通过委托给服务和工厂来延迟控制器中的逻辑。
为什么?:当放置在服务中并通过函数公开时,逻辑可以被多个控制器重用。
为什么?:服务中的逻辑更容易在单元测试中被隔离,而控制器中的调用逻辑更容易被mock。
为什么?:从控制器中删除依赖项并隐藏实现细节。
这是我们过去通过将数据检索逻辑放入控制器而不是将其隔离在服务中而违反的。
现在我想让规则尽可能严格。理想情况下,如果配置的服务之一作为依赖项传递给控制器,我希望 Angular 抛出错误。它是可以在角度级别上解决的问题,还是我应该尝试单独解决它 - 例如,使用自定义ESlint
规则静态地解决?
将不胜感激任何见解或提示。
特别是,以下控制器违反了规则,因为它直接使用$http
服务:
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) {
});
};
}
另外,如果我对代码质量过度关注/疯狂,请告诉我:)