<分区>
MVVM 的新手...我注意到我们的 ViewModel 正在执行以下操作:
- 他们正在处理自己的异常
- 他们正在直接实例化 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 模型应该包含记录器吗?它应该做什么?它不应该做什么?大家怎么看?