Discusión sobre el artículo "Cómo desarrollar un agente de aprendizaje por refuerzo en MQL5 con integración RestAPI (Parte 4): Organización de funciones en clases en MQL5"
Echa un vistazo al nuevo artículo: Desarrollo de un agente MQL5 RL con integración RestAPI (Parte 4): Organización de funciones en clases en MQL5.
Autor: Jonathan Pereira
Hola Jonathan,
Gran artículo, sólo para hacerle consciente. Cuando se utiliza la palabra clave "interfaz" no es necesario utilizar "público:", "virtual" y " = 0;"
Shep
Hola, Jonathan,
Gran artículo, pero sólo para advertirte. Cuando se utiliza la palabra clave "interfaz", no es necesario utilizar "público:", "virtual" y " = 0;"
Shep
Gracias por tu comentario. Me alegro de que te haya gustado el artículo. Me gustaría aclarar por qué elegí utilizar public: , virtual y = 0; en las interfaces, aunque algunos de estos elementos puedan parecer redundantes:
-
Claridad y consistencia del código:
- En C++ y, por extensión, en MQL5, hacer explícito public: , virtual y = 0; en las interfaces mejora la legibilidad y deja claro que estos métodos son parte de una interfaz que necesita ser implementado. Esto es especialmente útil para los desarrolladores que están más acostumbrados a lenguajes como Java, donde estas declaraciones son obligatorias.
-
Compatibilidad con C++:
- MQL5 se basa en gran medida en C++, donde las interfaces se definen con clases abstractas puras. El uso explícito de virtual e = 0; asegura que el código MQL5 sigue las mejores prácticas de C++, haciendo la vida más fácil a los desarrolladores que trabajan con ambos lenguajes.
-
Documentación implícita:
- Aunque los miembros de una interfaz sean implícitamente públicos, declarar public: actúa como una forma de documentación interna, dejando claro a cualquiera que lea el código que estos métodos son accesibles públicamente. Virtual y = 0; refuerzan que la clase es abstracta y que los métodos deben ser implementados por las clases derivadas.
-
Extensibilidad y mantenimiento:
- Mantener estas declaraciones explícitas permite una mayor flexibilidad en la evolución del código. Si en el futuro es necesario añadir métodos no virtuales o privados, la estructura del código ya estará preparada para estos cambios, facilitando el mantenimiento.
-
Cumplimientode los estándares de codificación:
- Muchos estándares de codificación C++ recomiendan o requieren estas declaraciones explícitas. Seguir estos estándares en MQL5 ayuda a mantener un alto nivel de rigor y disciplina en la codificación.
Aunque no es estrictamente necesario usar public: , virtual y = 0; en las interfaces MQL5, optar por incluirlas aporta beneficios en términos de claridad, consistencia y mantenibilidad del código. Espero que esta explicación ayude a aclarar mi elección de diseño.
Gracias por su comentario. Me alegro de que te haya gustado el artículo. Me gustaría aclarar por qué elegí utilizar public: , virtual y = 0; en las interfaces, aunque algunos de estos elementos puedan parecer redundantes:
-
Claridad y consistencia del código:
- En C++ y, por extensión, en MQL5, hacer explícito public: , virtual y = 0; en las interfaces mejora la legibilidad y deja claro que estos métodos son parte de una interfaz que necesita ser implementado. Esto es especialmente útil para los desarrolladores que están más acostumbrados a lenguajes como Java, donde estas declaraciones son obligatorias.
-
Compatibilidad con C++:
- MQL5 se basa en gran medida en C++, donde las interfaces se definen con clases abstractas puras. El uso explícito de virtual e = 0; asegura que el código MQL5 sigue las mejores prácticas de C++, haciendo la vida más fácil a los desarrolladores que trabajan con ambos lenguajes.
-
Documentación implícita:
- Aunque los miembros de una interfaz sean implícitamente públicos, declarar public: actúa como una forma de documentación interna, dejando claro a cualquiera que lea el código que estos métodos son accesibles públicamente. Virtual y = 0; refuerzan que la clase es abstracta y que los métodos deben ser implementados por las clases derivadas.
-
Extensibilidad y mantenimiento:
- Mantener estas declaraciones explícitas permite una mayor flexibilidad en la evolución del código. Si en el futuro es necesario añadir métodos no virtuales o privados, la estructura del código ya estará preparada para estos cambios, facilitando el mantenimiento.
-
Cumplimientode los estándares de codificación:
- Muchos estándares de codificación C++ recomiendan o requieren estas declaraciones explícitas. Seguir estos estándares en MQL5 ayuda a mantener un alto nivel de rigor y disciplina en la codificación.
Aunque no es estrictamente necesario usar public: , virtual y = 0; en las interfaces MQL5, optar por incluirlas aporta beneficios en términos de claridad, consistencia y mantenibilidad del código. Espero que esta explicación ayude a aclarar mi elección de diseño.
Te entiendo, trabajo mucho en C++, así que te entiendo. Gran trabajo, gran artículo y gran respuesta, gracias.
Muchas gracias, hermano.
¡¡¡Спасибо очень хорошая статья!!!
WebRequest стал более мощным, чем когда-либо. Вот почему мы не анализировали ваш код.
Также можно сделать его исследования, например, из индикаторов а не только из экспертов.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Cómo desarrollar un agente de aprendizaje por refuerzo en MQL5 con integración RestAPI (Parte 4): Organización de funciones en clases en MQL5:
Este artículo examina la transición de la codificación procedimental a la programación orientada a objetos (POO) en MQL5, enfocándose en la integración con REST APIs. Discutimos la organización de funciones de solicitudes HTTP (GET y POST) en clases y destacamos ventajas como el encapsulamiento, la modularidad y la facilidad de mantenimiento. La refactorización de código se detalla, y se muestra la sustitución de funciones aisladas por métodos de clases. El artículo incluye ejemplos prácticos y pruebas.
En este artículo, vamos a dar un paso importante y organizar nuestras funciones en clases dentro de MQL5. Vamos a utilizar la programación orientada a objetos, que es una forma de escribir código que ayuda a mantener las cosas organizadas y fáciles de entender. Es importante porque facilita la reparación y mejora del código. Un código bien organizado y modular también puede utilizarse en diferentes partes del proyecto o incluso en proyectos futuros.
En el resto del artículo, vamos a explicar cómo reestructurar nuestras funciones MQL5 existentes en clases. Mostraremos cómo esto puede hacer que el código sea más legible y eficiente. Vamos a dar ejemplos prácticos de cómo hacerlo y mostrar cómo esto puede facilitar el mantenimiento y la mejora del código.
La programación orientada a objetos (POO) es una forma poderosa de desarrollar software. En MQL5, utilizar clases es un gran avance respecto al método procedimental de escribir código. En esta parte, vamos a explorar cómo esto puede mejorar la calidad de nuestro proyecto. Vamos a considerar cuatro aspectos importantes:
Encapsulamiento y modularidad: Las clases ayudan a organizar funciones relacionadas y variables en un solo lugar, lo que facilita el mantenimiento y reduce los errores.
Reutilización de código: Una vez que escribes una clase, puedes usarla en muchos lugares diferentes, lo que ahorra tiempo y mantiene la consistencia del código.
Facilidad de mantenimiento y mejora: Con funciones organizadas en clases, es más fácil encontrar y corregir errores o hacer mejoras. La estructura clara hace que el código sea más accesible.
Abstracción y flexibilidad: Las clases facilitan la abstracción al ocultar la complejidad y exponer solo lo necesario. Esto hace que el código sea más intuitivo y flexible.
Vamos a demostrar que reorganizar nuestras funciones en clases en MQL5 no solo es para hacer que el código se vea mejor. Es un cambio significativo que hace que el código sea más eficiente, fácil de entender y de mantener. Explicaremos la transformación de funciones aisladas en métodos de clases bien definidos, lo que brinda beneficios inmediatos y a largo plazo. Esto no solo mejora nuestro proyecto actual, sino que también nos ayuda a crear una base sólida para futuros proyectos en MQL5.
Autor: Jonathan Pereira