Cómo ser un mejor programador (parte 01): 5 cosas que evitar para convertirse en un programador exitoso de MQL5
Introducción
— Oliver Wendell Holmes
Para llegar a ser mejores programadores, además de estudiar código 24/7, también debemos conocer las mejores prácticas, si no aprender a codificar en general. Aprender cómo aprender el código junto con las mejores prácticas de aplicación resulta vital para todos los que necesitan tener una carrera de codificación exitosa. Conociendo el cómo y el por qué, seremos conscientes de lo que hacemos; esto aumentará nuestra capacidad de recordar y nos ayudará a mejorar nuestro código en general.
Los métodos que veremos a continuación son herramientas probadas que pueden cambiar nuestra experiencia de programación y la manera en que programamos casi de la noche a la mañana, si aplicamos con atención todo lo que vamos a leer en este artículo.
01 — Abandone los hábitos ciegos de copiar y pegar
"El placer más noble es el gozo de la entendimiento".
— Leonardo Da Vinci
Este es el mayor hábito de los novatos y, en ocasiones, incluso los programadores experimentados lo hacen. Recuerdo que cuando comencé a programar en 2019, la mayoría de las veces me metía en el foro buscando ese "Código que funciona". No prestaba mucha atención a lo que se explicaba cada vez que hacía una búsqueda sobre un tema en concreto; todo lo que buscaba era ese comentario en el alguien respondía "Gracias, ahora funciona" o cualquier otro comentario en el que alguien decía que le había servido de ayuda (especialmente la persona que formulaba la pregunta en primer lugar en el foro)… ¡¡¡No hace falta decir lo que hacía una vez encontraba ese fragmento de código que funcionaba!!!
Ahora me avergüenzo de recordar que una vez declaré que el gráfico de la biblioteca estándar no funcionaba
Ahora me doy cuenta de lo que no funcionaba en aquella época: era yo, porque incluso el código en sí era copiado de algún lugar que no recuerdo. Lo que intento decir es lo siguiente:
Asegúrese de comprender lo que está haciendo. No copie y pegue ciegamente el código del foro solo para hacer o arreglar cosas rápidamente
La mayoría de las veces, la forma en que muchos desarrolladores experimentados responden a los otros miembros del foro es difícil de seguir para las personas con este hábito, porque solo responden ofreciendo un enlace a la documentación de MQL5 sobre un tema determinado, sin mencionar las funciones automáticas en este sitio web que proporciona enlaces relacionados con un tema específico. Esto se debe a que el origen de la mayoría de los problemas es la incomprensión de los fundamentos y conceptos básicos.
SIEMPRE: ¡Busque el entendimiento, no la solución!
Una vez que comprenda los fundamentos, la codificación se volverá natural y automática.
Los hábitos de copiado y pegado no solo dañarán su reputación, sino que también le crearán más problemas de los que le solucionan.
02 — Renuncie a los problemas de piratería
Antes de solucionar un problema en su código, asegúrese de saber por qué tiene ese problema. Conocer su origen le ayudará a formular preguntas más adecuadas en el foro, en lugar de arrastrar su código esperando un código a cambio para solucionar el problema que ha surgido por no saber en absoluto qué y por qué está codificando. Por ejemplo, yo en la imagen de arriba: en primer lugar, copié el código en otro lugar con la esperanza de cambiar con ello la plantilla del gráfico, sin conocer ni comprender completamente el gráfico de la biblioteca estándar; por eso terminé diciendo que la biblioteca no funciona.
Una vez que localice el problema o error, asegúrese de conocer completamente la biblioteca y el código que no funciona. Hay varias formas de hacerlo en MQL5, las dos principales son:
- Documentación de MQL5
- Foro
Afortunadamente para nosotros, tenemos toda la documentación al alcance de la mano y no hay necesidad de estar en línea en los motores de búsqueda. Los programadores profesionales ya saben esto, pero los principiantes pueden ver aquí dónde y cómo acceder a ella rápidamente: abra el MetaEditor, vaya a la sección de Ayuda y clique en la opción desplegable Referencia MQL5, ahí lo tiene.
La mejor forma de aprender y encontrar lo que no ha visto a través de su propio código es compartir sus problemas con otros desarrolladores. ¡Pero no cometa el mismo error que yo, NO COPIE!
"Es el camino de la artesanía el que lleva a una comprensión y dominio auténticos".
Los novatos se encuentran en lo que llamo el CICLO DE NOVATOS
03 — Olvide el perfeccionismo
"Hecho es mejor que perfecto."
— Idea popular Silicon Valley
No puedo decir cuánto y por cuánto tiempo me contuvo esto de compartir cosas. Siempre estaba buscando el Santo Grial para poder compartirlo con otros usuarios en este sitio web. Me tomó tiempo darme cuenta de que si tengo algo que compartir, debería compartirlo y no dejar que mis propios pensamientos me lo impidan.
¿Qué es mejor?
¿Hacer un indicador, asesor, biblioteca o trozo de código en los próximos años, o ser prolífico y crear cientos de resultados imperfectos durante un año?
¿Escribir un código lo suficientemente bueno para mis compañeros desarrolladores o clientes, o un código imperfecto para mí mismo? Siempre tendremos tiempo y oportunidades de mejorar un código que necesita ser mejorado; en otros casos, ahorraremos tiempo enviando el código más rápido.
Podemos ver que esto se aplica a casi todo lo que los programadores pueden imaginar, todos los días:
- Nuestras aplicaciones móviles se actualizan
- Nuestros ordenadores y teléfonos y sistemas operativos de software se actualizan
- Incluso los lenguajes de programación como MQL5, Python y otros, mejoran día a día
Incluso nuestros lenguajes de programación y los frames de datos se actualizan; así que usted probablemente imaginará que la mejora con el tiempo no es algo negativo.
En MQL5.com, esto se aplica prácticamente en todas partes, por ejemplo la actualización de programas en el mercado.
En el foro, podemos cambiar un post, eliminar o simplemente actualizar una respuesta e incluso un comentario propio. ¡Qué locura! Ja, ja, ja
04 — Evite escribir código inteligente
"La depuración es el doble de compleja que escribir el código en primer lugar. Por lo tanto, si escribimos nuestro código de la forma más inteligente posible, no seremos lo suficientemente inteligentes como para depurarlo."
— Brian Kernighan
¡El código que se ciñe a las mejores prácticas aprendidas de la documentación ya es inteligente, BRO!
Escribe un código bueno, limpio y simple que sea fácil de leer y entender. Nadie se beneficiará de ese código tuyo tan inteligente, incluido usted, tres meses después. Para muchos novatos, resulta extremadamente difícil trabajar con el llamado código inteligente (los desarrolladores freelance pueden asegurárselo). ¿Alguna vez ha visto el código de una modificación de una asesor o de CodeBase que, por razones que no terminaba de comprender, resultaba muy complicado? No me malinterprete, no estoy metiéndome con nadie, ni animando a nadie a crear un código fácil para tareas complejas; todo lo que digo es que hay una forma de asegurarse de que incluso un código complicado pueda ser fácil de trabajar (creo que de eso precisamente trata la creatividad). El código limpio puede ayudar.
Aquí tenemos algunos consejos para escribir un código limpio:
- Estilícelo
- Hágalo consistente
- Coméntelo
- No se permita florituras
Estilícelo:
Simplemente usaré una función para contar una posición según su tipo como ejemplo
int CountPosByType(ENUM_POSITION_TYPE type){ int counter = 0; for (int i=PositionsTotal(); i>=0; i--) if (m_position.SelectByIndex(i)) if (m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type) { counter++; } return counter; }
La función es bastante fácil de entender, pero no sigue los anteriores consejos de código limpio, por lo que, en primer lugar, la estilizaré. Es muy sencillo, solo hay que clicar en el botón azul parecido a un peine en el MetaEditor
Este es el aspecto de nuestro código después de estilizarlo:
int CountPosByType(ENUM_POSITION_TYPE type) { int counter = 0; for(int i=PositionsTotal(); i>=0; i--) if(m_position.SelectByIndex(i)) if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type) { counter++; } return counter; }
¿Lo ve? Con solo estilizar nuestro código, ha pasado de difícil de leer a totalmente legible. Y esto ni siquiera ha modificado nuestro código, porque tenemos que dar el primer paso para escribir un código limpio, y eso implica hacerlo legible: porque si podemos leerlo, podremos modificarlo.
Hágalo consistente:
No puedo ni siquera decirle cuántas veces he terminado creando demasiadas variables para casi el mismo trabajo en los diferentes niveles de una función, ¿por qué no crear una variable global? También lo animaría a que identifique fácil de trabajar con fácil de recordar: es decir, a que use nombres de funciones que se recuerden con facilidad y que expliquen claramente de qué trata la función, para que pueda recordarlo incluso 6 meses más tarde. Esto reducirá su plazo de entrega hasta tres veces, ya que no tendrá que comenzar desde cero a crear funciones que ya se encuentran en un EA anterior: podrá copiar estas de sus trabajos anteriores.
Para el nombre de la función, lo haremos así:
int CountPositionsByType(ENUM_POSITION_TYPE type)
Dado que somos consistentes con nuestro código, podemos recurrir a la búsqueda y configurar la opción Buscar en los archivos
Desde allí, podremos buscar la función necesaria dentro de todos los EA e indicadores, y esto simplificará nuestro trabajo. La próxima vez que queramos crear la función, podremos copiarla y volver a usarla nuevamente en otros asesores.
La mejor manera de escribir un código consistente es usar POO (Programación Orientada a Objetos).
Un código consistente es fácil de usar, mientras que la depuración se debe realizar en un solo lugar
Coméntelo:
Incluso las cosas que los novatos llaman pequeñas, tales como escribir comentarios en nuestro código, pueden marcar una diferencia en la productividad. No solo harán que el código resulte legible, los comentarios también podrán ser un recordatorio, por ejemplo, sobre la naturaleza de una variable.
Ahora vamos a definir nuevamente el contador, esta vez con comentarios explicativos:
int counter = 0; //Variable to store the number of positions
La próxima vez que queramos acceder al contador, será así:
Lo mejor de comentar un código en MetaEditor, es que los comentarios actuarán como recordatorio del cometido de una variable o trozo de código. Esto resulta muy útil cuando tenemos tantas variables que olvidamos su cometido.
No se permita florituras:
La POO puede ayudar mucho cuando queremos mantener el código conciso. También debemos tener cuidado con diferentes funciones que puedan hacer más o menos el mismo trabajo. Por ejemplo, no necesitamos tener una función que compruebe si existe una posición según su tipo cuando ya tenemos otra función para contar posiciones según su tipo.
05 — Renuncie a escribir el código más corto posible
"La legibilidad es lo primero, después va lo demás".
Ahora podemos ver que los desarrolladores creen que están escribiendo un buen código si usan la menor cantidad de líneas posibles, o el menor número posible de caracteres en una línea. Esta tampoco es la decisión correcta.
El código escrito se leerá docenas, si no cientos de veces, así que le recomiendo esforzarse por escribir un código legible, independientemente de su longitud.
Puedo relacionar esto con los desarrolladores que a veces son perezosos (he sido de esos): implementamos unas cuantas cosas solo para terminar un trabajo en freelance o algo por el estilo.
Considere proporcionar entradas fáciles de usar en su asesor. Escriba un código para gestionar todas las excepciones y avisar al usuario de qué algo va mal, por ejemplo, si alguna entrada se ha establecido en cero, en cuyo caso el asesor podría no funcionar correctamente.
Esto es lo que quiero decirle:
los códigos de error, los códigos de devolución comercial, los errores de compilación y las excepciones en el sistema están para que usted los conozca, no para los usuarios. Por consiguiente, vamos a considerar escribir un código que ofrezca alertas, comentarios sobre el recuadro o lo que sea, pero teniendo en cuenta que el usuario solo puede ver lo que se supone que debe y considerando qué acciones deben efectuarse para hacer las cosas bien.
Sé que parece aburrido implementar todos los componentes desde cero, ¡pero siempre hay una mejor forma de descubrirlo! Puede mantenerlos en algún lugar de los archivos de inclusión para incluirlos o para copiarlos y pegarlos, podrá encontrar una manera adecuada.
Conclusión
Lo positivo de las buenas prácticas es que, si bien son difíciles de seguir y desarrollar, una vez afianzadas, nos ayudarán por el resto de nuestra carrera.
¡Gracias por su atención!
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/9643
- 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