0

一般的经验法则是视图模型中不应该有特定于 android 的代码以便于测试。

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

此规则是否有任何例外,例如使用 Bundle 或其他非 Activity 或 Fragment android 类?或者有什么建议可以解决吗?

4

1 回答 1

1

这可能会被标记,因为它非常基于意见。没有最终的权威,因此,颁布这些事情。

我个人曾参与过一些大型 MVVM 项目,包括 WPF 和 Xamarin,其中包含数十万行源代码,而任何地方都没有一行代码隐藏。我也可以诚实地说,在我使用 WPF 的 10 多年中,我从未见过一个问题没有通过严格遵守范式来优雅地解决的案例。这并不是说某些解决方案不是更冗长或更复杂......许多肯定是......但它们都很优雅,最重要的是,健壮。

不是每个人都像我一样是 MVVM 纯粹主义者。Josh Smith,WPF/MVVM 最受尊敬的权威之一,在他的书中开玩笑地写道Advanced MVVM:“其他人坚持认为代码隐藏中不应该有一行代码,基于代码不属于代码隐藏。多么奇怪的一堆!

任何技术(如 WPF)的问题在于,应用程序层之间的区别在最好的时候是模糊的。我们都见过缺乏经验的 WPF 开发人员,他们在面对 XAML 的强大功能时,开始尝试将尽可能多的逻辑塞进视图层。还有一些人通过简单地将代码隐藏问题移动到转换器和行为中来解决代码隐藏问题,而没有意识到这些实际上只是代码隐藏的一种稍微抽象的形式。(并不是我说它们不应该使用,我自己一直都在使用它们,请记住它们仍然是视图逻辑!)

所以,是的,这很复杂。归根结底,作为开发人员,您可以根据项目的要求做出最佳和最明智的决定。

于 2018-08-12T23:15:30.533 回答