RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1544575
Accepted
Lapish
Lapish
Asked:2023-10-08 00:18:08 +0000 UTC2023-10-08 00:18:08 +0000 UTC 2023-10-08 00:18:08 +0000 UTC

类命名约定#1

  • 772

您将如何命名/组织以下交互层次结构?如果应用程序完全是本地的并且没有网络部分,那么名称 Response 相关吗?是否可以在 ViewModel 中显示带有响应的类,或者仍然需要对其进行处理以消除响应?最佳实践是什么?

如果您对 User 感到困惑,那么您可以想出任何其他需要生成并批量添加到数据库中的随机类。

让我们有一个特定的用户类。

public class User
{
    public int Age { get; set; }
}

接下来我们有一个生成用户列表的服务:

public class UserService
{
    public IReadOnlyCollection<User> GetUsers()
    {

    }   
}

根据此服务中的数据,我们将数据传输到下一个服务,该服务应将用户集合保存在数据库中。

public class UserProcessingService <-- сервис для работы с бд
{
    public async Task SaveUsersAsync(IReadOnlyCollection<User> users)
    {
        //Сохраняем в бд
    }   
}

由于我们需要将User类保存在数据库中,因此我们至少需要向User类添加Id属性。但是如果我们直接将其添加到 User 中,那么为什么 UserService 应该知道有关数据库及其 id 的信息呢?这是数据层进入业务逻辑的流程。根据我的理解,该服务应该提供尽可能最压缩的类,而没有不必要的属性。所以我创建了一个新类。实体——数据库的实体。

public class UserEntity
{
    public int Id { get; set; }

    public int Age { get; set; }    
}

User 和 UserEntity 具有通用代码,我创建一个接口来同步它们的属性。这两个类现在都实现了这个接口。

public interface IUser
{
    public int Age { get; set; }    
}

现在,在 SaveUsersAsync 方法中,我们将 User 集合传输到 UserEntity 集合并保存它。接下来我想从 UserProcessingService 获取用户集合。让我们创建返回的类:

public class UserResponse : IUser 
{
    public int Id { get; set; }

    public int Age { get; set; } 
}

并更新我们的ProcessingService

public class UserProcessingService
{
    public async Task SaveUsersAsync(IReadOnlyCollection<User> users)
    {
        //Сохраняем в бд
    }   

    //Новый метод
    public async Task<IReadOnlyCollection<UserResponse>> GetUsersAsync()
    {
        //Получаем коллекцию пользователей из бд, маппим и отдаем
    }
}
c#
  • 1 1 个回答
  • 69 Views

1 个回答

  • Voted
  1. Best Answer
    aepot
    2023-10-08T20:11:41Z2023-10-08T20:11:41Z

    我通常避免Service在类名中使用任何内容,因为它是垃圾并且没有任何意义,UserService它就像UserClass. 只清楚有关于用户的东西,但具体是什么就不清楚了。

    如果一个类执行 CRUD,那么它就是Manager. 如果一个类产生或生成数据(例如工厂),那么它就是Provider。例如,Manager他可以去医院Provider与外界保持联系。

    数据模型应简单命名为User, Role, PermissionSet。不同的命名空间中可以有相同名称的类,但您需要非常小心,避免实体冲突或混淆。这是通过命名空间和修饰符的层次结构来实现的internal,以便实体不会出现在不需要的地方。如果主应用程序/服务器代码不应该直接操作实体,那么应该故意隔离(封装)它们。

    一般来说,最好不要太花哨的命名,也不要发明专有技术,否则代码将变得对其他开发人员来说难以理解(其他开发人员甚至可以在N时间后指自己,当你紧张并记住时) “当我写这篇文章时,我在吸什么?”)。尝试让代码易于理解是能够编写可维护代码的一个重要部分。越简单越好。

    如果你严格遵循SOLID,尤其是SRP,那么类名应该不会有问题。

    • 1

相关问题

  • 使用嵌套类导出 xml 文件

  • 分层数据模板 [WPF]

  • 如何在 WPF 中为 ListView 手动创建列?

  • 在 2D 空间中,Collider 2D 挂在玩家身上,它对敌人的重量相同,我需要它这样当它们碰撞时,它们不会飞向不同的方向。统一

  • 如何在 c# 中使用 python 神经网络来创建语音合成?

  • 如何知道类中的方法是否属于接口?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5