文章 "开发具有 RestAPI 集成的 MQL5 强化学习代理(第 4 部分):在 MQL5 中组织类中的函数"

 

新文章 开发具有 RestAPI 集成的 MQL5 强化学习代理(第 4 部分):在 MQL5 中组织类中的函数已发布:

本文讨论 MQL5 中从面向过程编码向面向对象编程 (OOP) 的过渡,重点是与 REST API 的集成。今天,我们将讨论如何将 HTTP 请求函数(GET 和 POST)组织到类中。我们将仔细研究代码重构,并展示如何用类方法替换孤立的函数。本文包含实用的示例和测试。

在本文中,我们将迈出重要的一步,在 MQL5 中将函数组织成类。为此,我们将使用面向对象编程(object-oriented programming,OOP)。OOP 是一种编写代码的方法,有助于保持代码的组织性和易于理解。这很重要,因为它使我们更容易维护和改进代码。它的代码组织良好,是模块化的,我们可以在项目的不同部分甚至在未来的项目中使用它。

在本文中,我们还将了解如何将现有的 MQL5 函数重组到类中。我们将看到这如何使代码更可读、更高效。此外,文章还包含了如何做到这一点的实际例子,展示了如何应用所介绍的思路使代码更易于维护和改进。



面向对象编程(OOP)是一种强大的软件开发方法。在MQL5中,类的使用比过程式代码编写方法具有很大的优势。在本部分中,我们将探讨如何利用这一特点提高项目质量。让我们来看看四个重要方面:

  1. 封装和模块化:类有助于将相关函数和变量组织在一处,使其更易于维护并减少错误。

  2. 代码重复使用:一旦编写了一个类,就可以在不同的地方使用它,从而节省时间并保持代码的一致性。

  3. 易于维护和改进:当函数被分到类中时,更容易发现和修复错误或进行改进,因为清晰的结构使代码更容易访问。

  4. 抽象性和灵活性:类可以隐藏复杂性,只显示我们需要的东西,从而促进抽象化。这使得代码更加直观和灵活。

我们将看到,在 MQL5 中将函数重新组织为类并不只是为了美观,而是一个重大的改变,它使代码更高效、更易于理解和维护。本文将介绍如何将孤立的函数转化为明确定义的类方法,这将带来直接和长期的好处。这不仅将改进我们当前的项目,还将帮助我们为未来的 MQL5 项目奠定坚实的基础。

作者:Jonathan Pereira

 

你好,乔纳森、


这篇文章写得很好,只是想让你知道,当你使用关键字 "接口 "时,不需要使用 "public:"、"virtual "和"=0;"。


Shep

 
Shephard Mukachi #:

你好,乔纳森


文章写得很好,但我要提醒你。使用 "interface "关键字时,不必使用 "public:"、"virtual "和"=0;"。


Shep

感谢您的评论!很高兴您喜欢这篇文章。我想说明一下为什么我选择在接口中使用 public:,virtual 和 = 0;,尽管其中一些元素看起来可能是多余的:

  1. 代码的清晰度和一致性

    • 在 C++ 中,以及推而广之,在 MQL5 中,明确使用 public:, virtual and = 0; 可以提高可读性,并清楚地表明这些方法是需要实现的接口的一部分。这对于更习惯于使用 Java 等语言的开发人员来说尤其有用,因为在 Java 等语言中,这些声明是强制性的。
  2. 与 C++ 兼容

    • MQL5 在很大程度上基于 C++,在 C++ 中,接口是用纯抽象类定义的。明确使用 virtual e = 0; 可确保 MQL5 代码遵循 C++ 最佳实践,从而使使用这两种语言的开发人员的工作更加轻松。
  3. 隐式文档

    • 即使接口的成员是隐式公开的,声明 public: 也是一种内部文档形式,让阅读代码的人清楚地知道这些方法是公开访问的。Virtual and = 0; 则加强了类的抽象性,这些方法需要由派生类来实现。
  4. 可扩展性和可维护性

    • 保持这些声明的显式性,可以使代码的演进具有更大的灵活性。如果将来需要添加非虚拟方法或私有方法,代码结构已经为这些变化做好了准备,从而使维护变得更容易。
  5. 符合编码标准

    • 许多 C++ 编码标准都推荐或要求这些显式声明。在 MQL5 中遵循这些标准有助于保持编码的高度严谨性和规范性。

虽然在 MQL5 中并不严格需要使用 public:,virtual 和 = 0; 在 MQL5 接口中使用,但选择包含它们会带来代码清晰度、一致性和可维护性方面的好处。我希望这些解释能帮助澄清我的设计选择。

 
Jonathan Pereira #:

感谢您的评论!很高兴您喜欢这篇文章。我想说明一下为什么我选择在接口中使用 public:、virtual 和 = 0;,尽管其中一些元素看起来可能是多余的:

  1. 代码的清晰度和一致性

    • 在 C++ 中,以及推而广之,在 MQL5 中,明确使用 public:, virtual and = 0; 可以提高可读性,并清楚地表明这些方法是需要实现的接口的一部分。这对于更习惯于使用 Java 等语言的开发人员来说尤其有用,因为在 Java 等语言中,这些声明是强制性的。
  2. 与 C++ 兼容

    • MQL5 在很大程度上基于 C++,在 C++ 中,接口是用纯抽象类定义的。明确使用 virtual e = 0; 可确保 MQL5 代码遵循 C++ 最佳实践,从而使使用这两种语言的开发人员的工作更加轻松。
  3. 隐式文档

    • 即使接口的成员是隐式公开的,声明 public: 也是一种内部文档形式,让阅读代码的人清楚地知道这些方法是公开访问的。Virtual and = 0; 则加强了类的抽象性,这些方法需要由派生类来实现。
  4. 可扩展性和可维护性

    • 保持这些声明的显式性,可以使代码的演化具有更大的灵活性。如果将来需要添加非虚拟方法或私有方法,代码结构将已为这些变化做好准备,从而使维护变得更容易。
  5. 符合编码标准

    • 许多 C++ 编码标准都推荐或要求这些显式声明。在 MQL5 中遵循这些标准有助于保持编码的高度严谨性和规范性。

虽然在 MQL5 中使用 public:,virtual 和 = 0; 在 MQL5 接口中使用,但选择包含它们会带来代码清晰度、一致性和可维护性方面的好处。我希望这些解释能帮助澄清我的设计选择。

我懂你的意思,我经常用 C++ 工作,所以我懂你的意思。 很好的工作、很好的文章和很好的回复,谢谢。

 

非常感谢兄弟。

 

Спасибо очень хорошая статья!!!

WebRequest стал более мощным, чем когда-либо.Вот почему мы не анализировали ваш код.

Также можно сделать его исследования, например, из индикаторов а не только из экспертов.