我想我终于进入了代码青春期,因为我开始反叛并质疑我所教的一切。我希望这里有人能指出我正确的方向。目前,什么应该是简单而简短的任务,最终要花几个小时,因为我坐下来盯着几行代码,并质疑这是否确实是正确的方法......
这是一个例子。我们有一个系统可以让 User
在那个帖子中创建一个 Post
和 Mention
。我们有一个获取请求的 Controller ,然后将请求发送到 PostService,后者具有如下方法:createPostByUser(int $id, string $title, string $content)
并最终发送到保存帖子的 $postingUser->post($title, $string)
。
在 createPostByUser 方法中,我们将检查是否有任何 @mentions
,然后我们将传递给 MentionService。因此,在这种情况下,我们将访问: $mentionService->createMentionByUser(int $id, string $username, Mentionable $mentionable)
然后检查提及的用户 ($id) 和提及的用户 ($username) 是否存在,或者甚至可能恢复提及(如果它存在但被软删除)。如果它不存在并且无法恢复并且两个用户都是有效的,那么我们将继续调用 $mentioningUser->mention($mentionedUser)
来保存提及。
虽然所有这些都有效,但我开始发现它存在一些问题。什么会阻止新开发人员跳过服务层并直接进入用户对象并使用这些方法?我的意思是,在 MentionService 中,我们在保存提及之前检查一切是否正常,例如检查需要的两个用户是否有效,是否应该恢复提及。等等。什么会阻止一个不知情的新开发人员直接进入用户对象,然后不假思索地创建一个新的提及?
希望有人能指出我正确的方向。我们在正确的轨道上吗?
我只是想多了?
最佳答案
我认为这个问题无法通过技术方式解决。任何设计模式和任何架构风格都可能以某种方式被误解和故意规避。这个问题可能可以在组织层(在您的团队中)解决。一种可能性是,例如 代码审查 、 培训 和 文档 。最重要的是带有分支和拉取请求的代码审查。随着时间的推移,您可以为新开发人员实现学习效果并防止新的失败。
关于php - Eloquent ORM Active Record - 这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48770333/