文章写得很好,很容易读懂,谢谢!
我认为这个模板非常适合测试人员--很容易更改 EA 逻辑并添加新功能。
关于 MVC,您建议如何处理错误?
Andrei Novichkov:
从根本上说,我认为这些问题应该在它们产生的地方得到处理。
每个人都会这样做,这是合乎逻辑的--但问题是,如果出现错误,并且要求不执行(中止/或回滚)代码(代码在下面),该怎么办?
您描述的是一个例外 )
MVC 并不是一个僵化的模板,允许出现偏差。当然,也有 "纯净冠军",但这应被视为一种自然现象
原则上,这很糟糕。他们宣布了一种有用的模式,但却展示了如何不这样做:毕竟,MVC 是 OOP,而在这里,在所谓简化代码的借口下,我们得到了一些迷宫。至少他们可以把 init(又称控制器)扔进模型和视图中:
int OnInit() { init.Initialize(smb); view.Initialize(&init); // model.Initialize(&init); return INIT_SUCCEEDED; }全局对象怎么能用在别人的类里、别人的头文件里?
Stanislav Korotky:
原则上,这很糟糕。他们宣布了一种有用的模式,但却展示了如何不这样做:毕竟,MVC 就是 OOP,而在这里,以所谓的代码简化为借口,我们得到了一些迷宫。至少他们把 init(又名控制器)扔进了模型和视图中:
你怎么能在别人的类里、在别人的头文件里使用全局对象?你读完了吗?我在最后写的是组件之间的通信。还有对全局对象的访问。在这种情况下,我认为提出的方法是可以接受的,只是为了让大多数人理解。而你建议的方法意味着同样不受控制地访问全局对象,只是从侧面而已。
原来要复杂得多 - MVC , MVP , MVVM hubr: https://habr.com/ru/post/215605/
如果你相信 hubr,那么作者说得没错,在 MVC 中,除了任务之外,模型不应该知道(依赖)任何东西。
新文章 MVC 设计范式及其可能的应用已发布:
本文讨论了一种流行的 MVC 范式,以及它运用在 MQL 程序中的可能性、优缺点。 这个思路是将现有代码拆分为三个独立的组件:模型、视图和控制器。
在本文中,我们将研究“经典 MVC”,没有任何复杂性或附加功能。 这个思路是将现有代码拆分为三个独立的组件:模型、视图和控制器。 根据 MVC 范式,这三个组件可以独立开发和维护。 每个组件都可由单独的开发团队开发,他们承担创建新版本,并修复错误。 显然,这可令整个项目的管理更加容易。 甚而,它能够帮助其他人理解代码。
我们来看看每个组件。
MVC 范式的独立组件之间的关系可直观地表示如下:
作者:Andrei Novichkov