自定义 MVVM 实现对比棱镜

2023-12-29

这个问题的灵感来自这个封闭的问题:

Prism 实际上为开发者提供了什么?值得吗? https://stackoverflow.com/questions/6242156/what-does-prism-actually-offer-the-developer-and-is-it-worth-it

我已经在企业应用程序中实现了我自己的自定义 MVVM 实现。我有兴趣知道:

  • 我为什么要学习 PRISM(特别是 PRISM,而不是其他 MVVM 框架)?
  • PRISM 相对于自定义 MVVM 实施的优势
  • 学习 PRISM 值得投资吗?

希望这个问题不是主观的,大家不要争论:)


与许多为您执行常见任务的框架一样,您将获得:

  1. 经过更多人的眼球测试: 不仅仅是你自己。这(希望)包括单元测试,您在构建自己的框架时可能会或可能不会进行单元测试。
  2. 对于其他开发人员来说更具可读性:没有其他人有您的自定义 MVVM 框架的经验。但是,如果其他开发人员加入您的项目,或加入您的团队,或加入您的公司,他们可以直接跳入 Prism 代码。
  3. 更好的文档:同样,任何新加入的人都可能必须通过手动从您的大脑和团队中的任何其他用户收集集体知识并查看源代码来学习诀窍。第三方框架有自己的文档,并且互联网上还有大量博客文章。
  4. 更好的社区:您可以在 StackOverflow 上提出有关“如何使用 Prism 执行 X 操作?”的问题。你不能用你的自定义框架来问这个问题。
  5. 可能更有能力:由于需要为您/您的团队之外的更多用户提供服务,因此将添加更多功能。如果您需要做一些以前从未做过的与 MVVM 相关的事情,那么您自己的 MVVM 框架中很可能没有内置对它的支持。但这很可能在棱镜中。
  6. 更好的结构:假设您想做一些与 MVVM 相关的事情,但 Prism 中没有。很可能,这是有充分理由的!如果某些东西不在为给定领域工作而设计的(相当成熟的)框架中,则表明您正在尝试做的是一种不自然或尴尬的解决问题的方式。使用您自己的框架,很容易说“哦,我会添加该功能”,然后 6 个月后意识到您犯了一个巨大的错误,因为这个新功能使您的代码很难遵循,或者最终成为很多代码的向量错误或诸如此类的问题。
  7. 简历行项目:对于雇用“实现并使用过自定义 MVVM 框架”的人,我的心情很复杂。虽然这可能意味着它们很聪明,但它也可能表明可怕的“非在此建造综合症”。另一方面,将“Microsoft Prism MVVM Framework”放入大量技术中可能会很好,但并不是令人惊叹的。两全其美的是一个更长的要点,大致是“对 MVVM 模式的深入理解,通过在切换到 MVVM Prism 之前首先实现用于学习目的的玩具 MVVM 框架来实现”。是的,这三者之间的区别不会影响你的简历,也不会在面试中出现非内置综合症,但值得记住,特别是当你正在申请时对于一个拥有足够简历的地方,他们有能力扔掉任何让他们稍微不安的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 MVVM 实现对比棱镜 的相关文章

随机推荐

  • 在 Shiny 中按日期过滤

    作为一个可怜的闪亮家伙 无法解决简单的任务 我在数据框中有一行带有日期的行 crime date lt strptime incidents REPORT DAT format Y m d 我的日期输出如下所示 1 2017 04 07 E
  • 在 Flask 中渲染 Jupyter Notebook Iframe

    我正在使用 Flask 为单个用户托管 UI 我一直在尝试做的事情是设置一种方法 让用户单击一个按钮 使用标记语言在文档中预先指定的位置插入一些文本和图像 我最初使用 Jinja2 来实现此目的 但问题是用户需要能够在插入数据后修改文档 以
  • 标签(或“标记”)接口是否已过时?

    我正在尝试帮助一位同事接受 OO 并且我发现在某些情况下 很难找到标签概念的可靠的现实示例 或marker 界面 不包含任何方法的接口 它仅用作标记或标记或标签 虽然对于我们的讨论来说这确实不重要 但我们使用 PHP 作为讨论背后的平台 因
  • ServiceStack支持二进制响应吗?

    ServiceStack服务中是否有任何机制可以返回流 大型二进制数据 WCF 的 MTOM 支持虽然笨拙 但可以有效地返回大量数据 而无需文本转换开销 我喜欢服务堆栈 这个小代码足以从内存流返回 Excel 报告 public class
  • Rails 中 Gemfile 有什么用?

    有什么用Gemfile在铁轨上 如何使用Gemfile 在 Rails 开发过程中 有时您会想要提供一些您需要的功能 但要么您不知道如何做 要么您不想自己实现它 因为有很多才华横溢的开发人员已为其开发投入了工作 您可能需要的这些开发 用户身
  • Django/Python 更新字段值(在模型保存期间)

    我试图在保存 django 模型时将它们中的许多字段大写 看着这个问题 https stackoverflow com questions 825955 changing case upper lower on adding data th
  • Gitlab 从特定源分支合并

    我在 gitlab 有一个分支叫devops我想合并我的master分支与devops分支 但是 我不希望任何其他分支发出合并请求devops分支 是否可以 基本上 对于devops作为合并时的目标分支 仅master可以是源分支 是否可以
  • 我们如何将“.db”推送到模拟器中?

    我们可以推送由某些 ide 创建的数据库吗sqlite工作室并将其推入我们的模拟器中app uses 有什么方法可以将你的 db 格式推送到android模拟器中吗 我认为您想通过在外部创建数据库来发送应用程序 这些是将数据库添加到应用程序
  • OpenShift Jenkins 设备上的 NPM 安装

    我 和其他许多人一样 正在努力让 Openshift 上的 Jenkins 墨盒与 NPM 很好地配合 按照其他人对 SO 的建议 我已成功导航需要在 Openshift 上进行的 NPM 缓存重定向 如下所述here https stac
  • 令人惊叹的 CSS 动画

    我有一个 CSS 动画 我想以 200 毫秒的间隔应用它 我已经这样设置 CSS discrete position relative opacity 1 webkit transition all 5s linear moz transi
  • 为什么允许入口点是私有的? [复制]

    这个问题在这里已经有答案了 这实际上是如何运作的 我想Main应该被 称为 但如果它被标记为私有 这怎么可能呢 public class Program private static void Main 来自 bytes com 上的 Jo
  • 如何从另一个工作流程启动一个工作流程并检索被调用工作流程的返回值

    我正在测试谷歌工作流程 并想从另一个工作流程调用工作流程 但作为一个单独的流程 不是子工作流程 我可以开始执行 但目前无法检索返回值 我收到了一个执行实例 argument null name projects xxxxxxxxxxxx l
  • 为什么 Mono 上的 NetMQ DealerSocket 在 Debian Wheezy 上不向服务器发送消息,但在 Windows 上却发送消息?

    我在 Debian Wheezy 上的 Mono 4 8 上使用 NetMQ 4 0 0 1 时遇到一些问题 经销商套接字不会发送任何消息 直到我不会停止调用它来发送新消息 当我将Thread Sleep 1000 在创建任务之间比一切都好
  • 制作文件警告,覆盖目标命令

    作为 makefile 的一部分 我想生成目标的调试或发布版本 从功能上来说 一切正常但是 我在运行 make 时收到警告 12 SRC shell echo src cpp 13 SRC shell echo TEST ROOT cpp
  • 安装 npm cypress-mongodb 时出现问题

    我正在尝试设置插件cypress mongodb在我们的 cypress 框架上使用 但我遇到了太多问题 我已经安装并配置了插件文档 https www npmjs com package cypress mongodb 但是当我启动 cy
  • 无法删除或更新父行:外键约束失败(hibernate xml 映射)

    我想删除用户所属的所有组 但目前不起作用 我认为在映射 User hbm xml 或 Group hbm xml 级别缺少一些东西 但我不知道 错误是 无法删除或更新父行 外键约束失败 sharedmap groupe 约束FK gq7wi
  • extern"C" 与 extern 的区别

    我是否使用有什么区别extern C 整个标头的说明符 或指定extern对于每个功能 据我所知 没有 因为只有函数和变量可以外部链接 所以当我使用extern每个函数原型和外部变量之前都有说明符 我不需要使用全局extern C 宣言 示
  • 挂钩 Drupal 注册并根据业务逻辑验证用户信息

    我想挂接到注册模块 我已经拥有一个包含 50000 个使用我的旧网站的用户的数据库 现在我正在迁移到 Drupal 我还没有将条目迁移到 drupal 数据库 我将检查我的旧数据库 当用户尝试在 Drupal 中注册时 我需要检查他提供的用
  • 如何在 CALayer.contents 中添加 Stretchable UIImage?

    我有一个 CALayer 我想向其中添加一个可拉伸的图像 如果我只是这样做 layer contents id UIImage imageNamed grayTrim png resizableImageWithCapInsets UIEd
  • 自定义 MVVM 实现对比棱镜

    这个问题的灵感来自这个封闭的问题 Prism 实际上为开发者提供了什么 值得吗 https stackoverflow com questions 6242156 what does prism actually offer the dev