Анти-паттерны (anti-patterns), также известные как ловушки (pitfalls) — это классы наиболее часто внедряемых плохих решений проблем. Они изучаются, как категория, в случае когда их хотят избежать в будущем, и некоторые отдельные случаи их могут быть распознаны при изучении неработающих систем. Концепция также прекрасно подходит к...
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
Прошло ровно 10 лет с публикации известной и классической в мире программирования статьи, написанной Ричардом Гэбриелом, название которой стало уже нарицательным и вынесено в заголовок моей заметки. Его статья стала настолько острой и злободневной для своего времени, что вызвала бурный всплеск обсуждений в сообществе программистов, целый ряд...
在我看来,你大错特错了!
一旦你有了大的项目(至少有几千行代码),你会发现用类(OOP)编程使你非常容易控制开发过程,最重要的是,控制调试过程。
此外,OOP使项目更接近现实生活,事实上在现实生活中,我们只是处理对象的实例(一栋房子、一棵树、一个人、一辆车、一个订单等),即处理一组属性和方法 :)
试着用OOP做一些事情,你会发现,它更加优雅和清晰。它比程序化编程更容易!
MoneyJinn:
在MetaTrader 5中使用通常的程序性编程。
OOP是程序化编程的一种发展。
毕竟,没有人质疑你可以没有功能。事实上,在一定程度上,它甚至更快。有一些代码片段,用不同的数据执行一个相同的动作,这并不重要。制作一份副本非常容易。
函数的重复使用输给了OOP。功能的扩展总是创建一个新的函数,并重新编写代码,使之能够根据不同的条件调用这个函数。在一个正确编写的OOP程序中,扩展是一个简单的事情,不需要重做整个代码。
如果在编写没有OOP的程序时,你不会因为规模问题、大量不必要的数据和数百个函数、变量的随机重叠和功能的 "热交换 "的必要性而感到不适,你就不需要OOP。
是的,你不应该为了OOP而写OOP,没有什么好结果。你不应该用类来代替函数。避免反模式
OOP是一个错误,就像 "Niva "或 "Lada"。
在MetaTrader 5中使用常规程序化编程。
它在这里和MetaTrader 4中一样可以访问。
太糟糕了,MetaQuotes没有强调这一点。
OOP是程序化编程的一种发展。
如果在编写没有OOP的程序时,你不会因为规模问题、大量的额外数据和数百个函数、意外重叠的变量、需要 "热交换 "的功能而感到不适,那么你就不需要OOP。
是的,你不应该为了OOP而写OOP,没有什么好结果。你不需要用类来代替函数。
我100%同意。
此外,OOP使项目更接近现实生活,因为在现实生活中,我们只是处理对象(房子、树、人、机器、订单等)的实例,也就是处理一系列的属性和方法 :)
哪一个更接近现实:一个虚拟的房子、一棵树、一个人,还是看到程序被处理器实际执行的顺序?
这是一个宗教问题。而每个人都有自己的选择。
我的帖子是对一个被封杀的话题发起人的问题的回答,他最终为自己不喜欢OOP而付出了代价。
同时也是对那些试图掌握像MT5这样的产品或从MT4转到MT5的普通交易者的回答。
我的帖子是对一个被封杀的话题发起人的问题的回应,他最后为自己不喜欢OOP而付出了代价。
课题发起人的检查清单。
面向对象的编程是(把这句话倒过来读) 面向对象的编程。或者说,基于对象的编程。
我们所说的对象是指程序代码(通常与其他代码隔离),它描述了 真实对象(例如 "机器")或虚构对象(例如 "grail poopkin")的参数和行为。每个物体都可以有自己的生命,可以在自己的汁液中炖煮。一套有限的 "神经通道 "被用来与外部世界沟通- 像具有外部访问的特殊功能。
在我看来,OOP的主要优势在于,对象代码可以独立于其他代码进行调试。然后你可以像马赛克一样,组装出更复杂的物体。例如,一个 "女人 "对象可能包括其他对象。"机身"、"起落架"、"坦克"、"驾驶舱 "等。
MQL5 Wizard 是MQL OOP的一个很好的例子。它允许你用现成的对象来组装专家顾问。而这些对象可以被组合起来。
赞成OOP的最悲惨的论点是:那些已经理解了它的本质的人,会迷上它。它只是更容易编程;代码更清晰、更有条理。
...
赞成OOP的最有力的论据是:那些了解它的人都会迷上它。它只是更容易编程,代码更容易理解,结构更合理。
这是真的,在我掌握OOP之前,我觉得它是如此的垃圾,甚至不值得混进去。
一旦我理解了它,一切都变得清晰了,我不需要再发明独特的变量名。
你不必为变量创建唯一的名字,你不必为i和j计数器创建唯一的名字,你也不必在成千上万次的代码中搜索出这个变量没有归零的地方。:o),最重要的是,一切都在你的眼前--当你打开程序时,一切都瞬间清晰,这里是对象的调用,这里是对象的交互,如果你想了解对象在做什么,你就去看对象代码......。
这倒是真的,在我掌握OOP之前,在我看来,它就是一坨屎,甚至不值得去研究。
我一理解它,就摆脱了一切,我不需要再发明独特的变量名。
你不需要为变量创建唯一的名字,你不需要为i和j计数器创建唯一的名字,你也不需要在成千上万的代码中寻找这个变量没有归零的地方。:o),最重要的是,所有的一切都平淡如水,当你打开程序时,一切都可以立即理解,这里是对象的调用,这里是对象的交互,如果你想了解对象的作用,你就去看对象代码吧
+10
我甚至会反驳这样的说法:不应该在小项目中使用OOP。
在我看来,只要有可能,就应该使用OOP--代码只是延长了一点,但其透明度却增加了许多倍。
+10
我甚至会争辩说,对于小项目来说,没有必要使用OOP。
在我看来,OOP应该被推到任何可能的地方--代码的长度并不明显,但其透明度却增加了许多倍。
我是一个OOP的支持者,因为我已经理解了从下往上编程的便利性。从对象交互的接口到类的实现。所有那些从实现类开始的人都不是在写正确的OOP,他们是在写功能包装。这样的包装器只是为变量和函数提供了一个方便的命名空间。这是图书馆的通常做法。但即使是这样的最低限度也适合一些人,他们骄傲地说 "我是用OOP写的",虽然这也是他们的权利。
有一些熟练的程序员和现代软件的整个潮流的创始人,他们有足够的经验来批评OOP范式。这是一个老话题,原则上,所有的东西都在很久以前被讨论到最小的细节,什么时候,什么地方失去了。
http://blogerator.ru/page/oop_why-objects-have-failed
以下是OOP支持者的回答
http://bugtraq.ru/library/programming/objectshavenotfailed.html
C++速度比较(小测试)面向对象和程序化编程(+不同的编译器)。
https://www.mql5.com/ru/forum/132434/page3