Обсуждение статьи "Как разработать агент обучения с подкреплением на MQL5 с интеграцией RestAPI (Часть 4): Организация функций в классах в MQL5"

 

Опубликована статья Как разработать агент обучения с подкреплением на MQL5 с интеграцией RestAPI (Часть 4): Организация функций в классах в MQL5:

В данной статье рассматривается переход от процедурного написания кода к объектно-ориентированному программированию (ООП) в MQL5 с упором на интеграцию с REST API. Сегодня мы обсуждаем организацию функций HTTP-запросов (GET и POST) в классы и подчеркнем такие преимущества, как инкапсуляция, модульность и простота обслуживания. Подробно рассмотрим рефакторинг кода и покажем замену изолированных функций методами класса. Статья содержит практические примеры и тесты.

В этой статье мы сделаем важный шаг и организуем наши функции в классы в MQL5. Для этого, мы будем использовать объектно-ориентированное программирование, которое представляет собой способ написания кода, помогающий сохранить его организованность и простоту понимания. Это важно, поскольку облегчает нам обслуживание и улучшение кода. Хорошо организованный и модульный код мы сможем использовать в разных частях проекта или даже в будущих проектах.

В оставшейся части статьи мы расскажем, как реструктурировать существующие MQL5-функции в классы. Мы покажем, как это может сделать код более читабельным и эффективным, и также приведем практические примеры того, как это сделать, показывая как это может облегчить обслуживание и улучшение кода.

Объектно-ориентированное программирование (ООП) - это мощный способ разработки программного обеспечения. В MQL5 использование классов является большим превосходством по сравнению с процедурным методом написания кода. В этой части мы рассмотрим, как улучшить качество нашего проекта с помощью этой характеристики. Давайте рассмотрим четыре важных аспекта:

  1. Инкапсуляция и модульность: Классы помогают организовать связанные функции и переменные в одном месте, что упрощает обслуживание и уменьшает количество ошибок.

  2. Повторное использование кода: Написав класс, можно использовать его в разных местах, что экономит время и поддерживает согласованность кода.

  3. Простота обслуживания и улучшения: Если функции разделены на классы, проще найти и исправить ошибки или внести улучшения, так как четкая структура делает код более доступным.

  4. Абстракция и гибкость: Классы способствуют абстрагированию, скрывая сложность и раскрывая только то, что нам необходимо. Это делает код более интуитивным и гибким.

Мы покажем, что перестановка функций в классы в MQL5 - это не только красоты ради, это значительное изменение, которое делает код более эффективным, простым для понимания и обслуживания. Мы расскажем о преобразовании изолированных функций в четко определенные методы класса, что даст преимущества и сразу, и в долгосрочной перспективе. Это не только улучшит наш текущий проект, но и поможет нам создать прочный фундамент для будущих проектов на MQL5. 

Автор: Jonathan Pereira

 

Привет, Джонатан,


Отличная статья, но хочу тебя предупредить: когда ты используешь ключевое слово "интерфейс", тебе не нужно использовать "public:", "virtual" и " = 0;".


Shep

 
Shephard Mukachi #:

Привет, Джонатан,


Отличная статья, но хочу предупредить. Когда вы используете ключевое слово "интерфейс", вам не нужно использовать "public:", "virtual" и " = 0;".


Шеп

Спасибо за ваш комментарий! Я рад, что вам понравилась статья. Я хотел бы пояснить, почему я решил использовать public: , virtual и = 0; в интерфейсах, хотя некоторые из этих элементов могут показаться избыточными:

  1. Ясность и согласованность кода:

    • В C++ и, как следствие, в MQL5, делайте явными public: , virtual и = 0; в интерфейсах улучшает читабельность и дает понять, что эти методы являются частью интерфейса, который должен быть реализован. Это особенно полезно для разработчиков, привыкших к языкам вроде Java, где такие объявления обязательны.
  2. Совместимость с C++:

    • MQL5 в значительной степени основан на C++, где интерфейсы определяются с помощью чистых абстрактных классов. Явное использование virtual e = 0; гарантирует, что MQL5-код будет следовать лучшим практикам C++, облегчая жизнь разработчикам, работающим с обоими языками.
  3. Неявная документация:

    • Даже если члены интерфейса являются неявно общедоступными, объявление public: служит формой внутренней документации, давая понять любому, кто читает код, что эти методы общедоступны. Виртуальные и = 0; указывают на то, что класс является абстрактным и его методы должны быть реализованы производными классами.
  4. Расширяемость и ремонтопригодность:

    • Явное декларирование этих методов обеспечивает большую гибкость в развитии кода. Если в будущем потребуется добавить невиртуальные или приватные методы, структура кода уже будет подготовлена к этим изменениям, что упростит сопровождение.
  5. Соответствие стандартам кодирования:

    • Многие стандарты кодирования C++ рекомендуют или требуют таких явных деклараций. Следование этим стандартам в MQL5 помогает поддерживать высокий уровень строгости и дисциплины в кодировании.

Хотя использование public не является строго обязательным: , virtual и = 0; в интерфейсах MQL5, выбор в пользу их использования дает преимущества в плане ясности, согласованности и сопровождаемости кода. Надеюсь, это объяснение поможет прояснить мой выбор дизайна.

 
Jonathan Pereira #:

Спасибо за ваш комментарий! Я рад, что вам понравилась статья. Я хотел бы пояснить, почему я решил использовать public: , virtual и = 0; в интерфейсах, хотя некоторые из этих элементов могут показаться излишними:

  1. Ясность и согласованность кода:

    • В C++ и, как следствие, в MQL5, делайте явными public: , virtual и = 0; в интерфейсах улучшает читабельность и дает понять, что эти методы являются частью интерфейса, который должен быть реализован. Это особенно полезно для разработчиков, привыкших к языкам вроде Java, где такие объявления обязательны.
  2. Совместимость с C++:

    • MQL5 в значительной степени основан на C++, где интерфейсы определяются с помощью чистых абстрактных классов. Явное использование virtual e = 0; гарантирует, что MQL5-код будет следовать лучшим практикам C++, облегчая жизнь разработчикам, работающим с обоими языками.
  3. Неявная документация:

    • Даже если члены интерфейса являются неявно общедоступными, объявление public: служит формой внутренней документации, давая понять любому, кто читает код, что эти методы общедоступны. Виртуальные и = 0; указывают на то, что класс является абстрактным и его методы должны быть реализованы производными классами.
  4. Расширяемость и ремонтопригодность:

    • Явное декларирование этих методов обеспечивает большую гибкость в развитии кода. Если в будущем потребуется добавить невиртуальные или приватные методы, структура кода уже будет подготовлена к этим изменениям, что упростит сопровождение.
  5. Соответствие стандартам кодирования:

    • Многие стандарты кодирования C++ рекомендуют или требуют таких явных деклараций. Следование этим стандартам в MQL5 помогает поддерживать высокий уровень строгости и дисциплины при кодировании.

Хотя использование public не является строго обязательным: , virtual и = 0; в интерфейсах MQL5, выбор в пользу их использования дает преимущества в плане ясности, согласованности и сопровождаемости кода. Надеюсь, это объяснение поможет прояснить мой выбор дизайна.

Я понял вас. Я много работаю на C++, так что я понял вас. Отличная работа, отличная статья и отличный ответ, спасибо.

 

Большое спасибо брату.

 

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

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

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