gpt4 book ai didi

c# - View 模型应该包含记录器吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:03 25 4
gpt4 key购买 nike

<分区>

MVVM 的新手...我注意到我们的 ViewModel 正在执行以下操作:

  1. 他们正在处理自己的异常
  2. 他们正在直接实例化 log4net 记录器

我的意见:
在我看来,我们应该创建一个包装 log4net 的静态日志记录助手类,所有对象都应该引用它。这样我们就可以随时轻松地更改日志实用程序

除了极少数情况外,我认为模型和 View 模型对象(或类似对象)不应该捕获或管理错误。我们应该捕获错误(在任何类型的模型中)的唯一时间是当我们确定我们无法轻易修复它时,因此,我们必须尽可能优雅和简洁地处理它。即便如此,我们也必须小心不要使用异常来管理正常的逻辑流(参见下面的示例)。我们真的应该让更高层记录和处理异常(即 UI 层)。模型或 View 模型的唯一工作应该只是……成为模型或 View 模型……主要是因为其他事情只会使代码困惑。但也因为我觉得它创造了更好的分离。我不会将日志实用程序放入模型或 View 模型中,就像我不会将数据传输对象 (DTO) 放入模型或 View 模型中一样。一旦我这样描述它......我想我们可以很容易地理解为什么我有这种感觉。

我所说的处理正常逻辑流的例子:

MealExpenses expenses = expenseReportDAO.getMeals(employee.Id)
expenses.ForEach(x => {
Try
{
total += expenses.getTotal();
}
Catch(MealExpensesNotFound ex)
{
total += getMealPerDiem();
}
})

...我相信你能明白为什么上面的例子不好。

所以我的问题是:
View 模型应该包含记录器吗?它应该做什么?它不应该做什么?大家怎么看?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com