Angular-styleguide: 服务的单一责任

创建于 2015-07-28  ·  6评论  ·  资料来源: johnpapa/angular-styleguide

这个风格指南中的信息非常好。 我确实有一个关于服务和单一职责的问题,以及这需要多细化。 例如,我有具有 crud 功能的视频应用程序。 最初我的服务结构如下:


// videos.service.js
(function() {

    'use strict';

    function Videos($http) {
        var service = {
            getVideos: getVideos,
            getVideo: getVideo,
            saveVideo: saveVideo,
            deleteVideo: deleteVideo
        }

        return service;

        function getVideos() {
            // return video list
        }

        function getVideo() {
            // return video by id
        }

        function saveVideo() {
            // add/edit video
        }

        function deleteVideo() {
            // delete video
        }
    }

})();

像这样分离功能会更好吗?


// videos.service.js
(function() {

    'use strict';

    function Videos($http) {
        var service = {
            getVideos: getVideos,
            getVideo: getVideo
        }

        return service;

        function getVideos() {
            // return video list
        }

        function getVideo() {
            // return video by id
        }
    }

})();

// videos_crud.service.js
(function() {

    'use strict';

    function VideosCrud($http) {
        var service = {
            saveVideo: saveVideo,
            deleteVideo: deleteVideo
        }

        return service;

        function saveVideo() {
            // add/edit video
        }

        function deleteVideo() {
            // delete video
        }
    }

})();

这可能归结为个人喜好,但我想我会得到任何人可能对此有任何见解。

感谢您的任何建议。

question

所有6条评论

我不是 Angular 的专家,但作为 CRUD 服务,它可能包含所有 CRUD 操作,因此您不应该在视频(使用获取)和 video_crud(使用保存/创建和删除)中破坏它。 否则 CRUD 服务的含义可能会混淆。

尽管如此,等待更多关于它的意见:)

乍一看,您的初始服务可能针对相同的 REST API 端点处理 CRUD,处理与视频相关的持久性功能。 它对 $http 具有相同的依赖性。 因此,我认为没有理由拆分事物,在这种情况下,如果您需要实现需要调用 getVideo 来加载某些元数据的 udateVideo 方法,您甚至可能最终会依赖于这些拆分服务。

@viniciuskneves在为公共用户和管理员用户提供应用程序时,这个想法将提供实用性,此时 api 服务器应该在两者之间进行区分。

@tedvanderveen我也倾向于同意这一点。 我猜想分离粒度可能更多地存在于模块本身的类型而不是模块正在做什么。

第一个问题是“为什么?”。 那么......“你会从中得到什么好处?”

我不认为有任何明显的好处。 除非你能清楚地定义它并且它没有填充 IF 和 MAYBE,否则它可能有价值。

关闭问题,因为我认为这不会添加到指南中,但问题很好,我相信已经回答了。

我的观点:这样做没有足够的价值

@johnpapa感谢您的投入。 得到了我需要的澄清。

此页面是否有帮助?
0 / 5 - 0 等级