视图模型中是否没有代码例外?

时间:2018-08-12 16:14:40

标签: android mvvm viewmodel testability

一般的经验法则是,视图模型中不应包含特定于Android的代码,以便于测试。

我需要将包含大量元数据的捆绑包传递给视图模型以进行过滤,然后返回视图。逻辑非常密集,最好由视图模型来处理。

此规则是否有任何例外,例如使用Bundle或其他非Activity或Fragment android类?还是有建议的解决方法?

1 个答案:

答案 0 :(得分:1)

这可能会被标记,因为它是基于意见的。这样,就没有最终的权威。

我亲自从事过一些大型的MVVM项目,包括WPF和Xamarin,其中包含成千上万行源代码,而在任何地方都没有一行代码。我也可以诚实地说,在与WPF合作的10多年中,我从未见过一个案例,即严格遵守该范式无法优雅地解决问题。这并不是说某些解决方案并不冗长或令人费解……很多绝对是……但是它们都很优雅,尤其是健壮。

并不是每个人都像我一样是MVVM的纯粹主义者。 Josh Smith是WPF / MVVM上最受尊敬的权威之一,在他的书Advanced MVVM中开玩笑地说:“其他人坚持认为,在背后的代码中永远不应只有一行代码,这是基于一个奇怪的观念:代码不属于后面的代码。真奇怪!”

诸如WPF之类的任何技术的问题在于,应用层之间的区别在最佳情况下是模糊的。我们都见过经验不足的WPF开发人员,他们面对XAML的强大功能后,开始尝试将尽可能多的逻辑塞入视图层。然后有人通过简单地将代码移入转换器和行为来解决代码隐藏问题,却没有意识到这些实际上只是代码隐藏的一种抽象形式。 (并不是说我不应该使用它们,我一直都在使用它们,只是要记住它们仍然是视图逻辑!)

是的,这很复杂。归根结底,作为开发人员,您有责任根据项目的需求做出最佳,最明智的决策。