我目前正在做一个遵循MVVM架构模式的Android项目。在组织代码时,我现在对实用程序类的位置感到困惑。我应该把utils类放在哪个包里?
我想创建一些实用工具类,如自定义吐司类,网络状态检查类通过ping的API网站,即时通讯在我的项目中使用。并且在这些类中创建静态方法将是不好的实践?并且在活动中直接使用这些类对于维护mvvm体系结构来说是不好的实践吗?因为我正在通过视图模型和livedataobserver更新我的活动数据。
正如我们所知,在MVVM中,我们有模型层,视图层和视图模型层。在一些文章中,我看到一些开发人员说utils属于模型层,而我看到utils属于视图层。
此外,我还对了解实用程序类的放置如何影响代码库的整体可维护性、可伸缩性和可测试性感兴趣。是否有任何最佳实践或指导方针可以帮助您做出此决定?
任何指导或经验分享将不胜感激。提前感谢您的帮助!我的包裹:
1条答案
按热度按时间ni65a41a1#
我喜欢遵循的一个做法是为实用程序代码选择最窄的范围,并仅在必要时扩展它。
假设你想引入一个返回字符串最后3个字符的函数,那么把这个函数放在哪里最好呢?如果它只被你代码库中的一个类使用--只需要在那个类中将函数设为私有即可。如果在同一个包中有多个类需要这个函数-你可以将它移到那个包中的一个单独的文件中。如果它在任何地方都被使用(这很少见)-它可能存在于“utils”包中的一个文件中。
我建议将utils放在更靠近使用它们的地方:自定义吐司类将存在于“视图”包中,而网络状态检查类可以存在于“网络”包中。想象一下,在某个时候,你想要将代码库拆分为独立的Gradle模块,这些模块将相互依赖并具有第三方依赖关系:在“views”模块中加入网络工具意味着该模块现在需要依赖Retrofit,这并不理想。因此,一个更好的地方将是“网络”模块,其中有一个翻新依赖感觉更自然。