在许多情况下,我需要为某些类使用CRUD编写大量类工作。例如,带有纯对象User、Book、Tag的CRUD。
我通常创建一个名为models的目录,将所有类的CRUD放到models文件夹中。
但是我觉得model这个词并不是一个很好的词。model这个词在计算机科学中有明确的定义吗?它是指用户的纯对象,还是用户的CRUD手段?
我还使用另一个名称services来表示更复杂的逻辑,例如,UserService可能需要UserModel以外的其他models。但是service这个词经常与其他一些情况相冲突,比如在线服务,后端服务。
在我的例子中,模型和服务有什么好名字吗?顺便说一句,我最常使用的是Node.js;它可能不会与Node.js中使用的通用约定冲突。
发布于 2016-01-26 22:55:50
归根结底,这将取决于是什么使代码对您和将来可能有机会处理您的代码的人来说是最容易理解的。如果“模型”和“服务”以一种显而易见的方式向任何进入代码的人传达了内在的想法,那么它们可能是好的。至于标准,我不知道是否有一套‘定义’的名称,你必须使用。例如,在MVC中,您将使用' models‘作为文件夹之一,以便存储您将提供给视图的所有实际模型,这在MVC架构中被理解为这些名称(模型、视图、控制器)是标准名称。
发布于 2016-01-27 14:50:03
我同意你的观点,Model有点模棱两可。有时用于表示域对象,如User/Book/Tag,有时用于表示涉及业务逻辑的对象,如“买书”、“鉴权用户”等。这两种用法的共同点是“模型”与UI明显分离,即完全由视图和控制器处理。
另一个有用的名称是Entities。在Robert Martin的面向对象设计工作中,他谈到了用例驱动的设计,并区分了三种对象:实体对象、交互对象和边界对象。
Entity objects在多个用例中都很有用。例如,在图书销售系统中,实体可以是Book/User/Recommendation/Review.
Interactor objects实现用例,它们通常使用多个实体对象。例如,Purchase_Book/Login/Search_Books可以是这样的对象。
Boundary objects用于跨模块边界传输数据,并用于构建系统各部分之间的接口,这些接口应该彼此解耦。例如,控制器可能需要创建一个Purchase_Book对象,并且为了创建它,它需要传递关于需要购买什么图书ID、由什么用户ID等的数据……这些数据可以打包到名为Purchase_Request的边界对象中。
虽然Interactor和Boundary需要更多的解释,但我发现Entities这个词很有意义,不需要阅读任何解释就可以直观地掌握。
https://stackoverflow.com/questions/35016601
复制相似问题