Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
El código no es portable - esa es su peculiaridad. No está pensado para ser portátil. Tiene otro propósito. Pues bien, el ámbito global de las variables es una poderosa herramienta para implementar mecanismos complejos. Sólo hay que saber utilizarlo. Cuando la gente me habla de errores y fallos ocultos, me confundo. Nunca he tenido ningún error relacionado con la visibilidad de las variables globales. En una palabra, en absoluto.
El problema con las variables globales es que si el proyecto es lo suficientemente grande y los cambios en el estado de estas variables provienen de muchas secciones de código, es bastante lento buscar los errores.
Ejemplo. Se encuentra un error porque el valor de una variable global no es claramente el que debería ser. Hay un par de docenas de archivos y 100500 líneas de código en el proyecto. Nadie recuerda cuántos fragmentos de código cambia esta variable. El resultado es una jarra de café y un sueño profundo con la cabeza pegada al teclado.
Y ahora lo mismo, pero OOP. Hemos escrito el código correctamente y todos los campos son privados. En consecuencia, directamente se cambia sólo en los métodos de la clase, y desde fuera sólo por el método Set. En consecuencia, ponemos puntos de ruptura en el método Set y en cuantos métodos hay en la clase, donde se cambia el campo, y podemos rastrear fácilmente donde se hacen los cambios y donde se cambiaron incorrectamente.
Nunca he tenido ningún error relacionado con la visibilidad de las variables globales. En absoluto.
Ni siquiera sé cómo convencerte de lo obvio, pero probablemente no debería, no me pagan por ello, ¿verdad?
¿Qué intentas hacer? Bueno, si quieres elogios, ahí tienes:
¡Peter! ¡Bien hecho, sigue así!
))))
El problema con las variables globales es que si el proyecto es lo suficientemente grande y los cambios en el estado de estas variables provienen de muchas secciones de código, es bastante lento buscar los errores.
Ejemplo. Se encuentra un error porque el valor de una variable global no es claramente el que debería ser. Hay un par de docenas de archivos y 100500 líneas de código en el proyecto. Nadie recuerda cuántos fragmentos de código cambia esta variable. El resultado es una jarra de café y un sueño profundo con la cabeza pegada al teclado.
Y ahora tenemos lo mismo, pero es OOP. Hemos escrito el código correctamente y todos los campos son privados. En consecuencia, sólo se modificará directamente en los métodos de la clase, pero desde fuera sólo mediante el método Set. En consecuencia, ponemos puntos de ruptura en el método Set y en cuantos métodos hay en la clase, donde se cambia el campo, y podemos rastrear fácilmente donde se hacen los cambios y donde se cambiaron incorrectamente.
Ni siquiera sé cómo convencerte de lo obvio, pero probablemente no debería, no me pagan por ello, ¿verdad?
¿Qué intentas hacer? Bueno, si quieres elogios, ahí tienes:
¡Peter! ¡Así se hace!
))))
Bueno, tal vez la comprensión del hecho, que no sólo con OOP puede escribir proyectos cool. Y no sólo ser competente en POO es un signo de desarrollador. No discuto que se puedan resolver muchas tareas con OOP. Pero hay otros enfoques.
no se trata de POO, se trata de los principios de escritura de código en sí, es la segunda vez que hablo de ello y@Vladimir Simakov escribió un ejemplo arriba
Si quieres utilizar la visibilidad de las variables globales, no hay problema, nadie te lo prohíbe, puedes hacerlo, pero en silencio, mientras nadie te mira. )))
pero como estilo de escritura de programas permanentemente utilizado es malo, y cuanto más código, más de este mal! - así lo has explicado? )))
SZY: una prueba más - mira la ayuda de MQL, ¿ves que todas las funciones están hechas como unidades separadas y completamente independientes? - pasar los parámetros = ¡obtener el resultado! ¿Crees que los programadores de Metakvot lo están haciendo mal de nuevo? Deberíamos utilizar algunos estilos libres de escribir funciones - aquí en el ámbito global, y aquí el usuario llamará a la función y obtendrá el resultado! )))) - el estilo procedimental (donde cada subrutina es un bloque lógico completo) es el código correcto, ¡escriba los códigos correctamente! no ... bueno, ya vendrá solo "cuando lo necesites rápido" ;)
De la práctica. Tengo más de 100 archivos conectados en mi proyecto. Algunos tienen más de 2000 líneas de código. Las variables globales se utilizan en todas partes. Nunca he tenido ningún fallo relacionado con su globalidad. Tal vez me haya adaptado a ello).
Es que tienes muy buena memoria. No todo el mundo tiene esa suerte. Ya recuerdo débilmente qué variables he introducido hoy. No recuerdo cuáles eran los de hace una semana. Pero eso no es un problema, todos son locales y el acceso a los campos de cualquier objeto es sólo a través de las funciones apropiadas. La POO me permite no recordar muchas cosas, ya lo he dicho más de una vez - idealmente, en cualquier lugar del código deberías tener acceso sólo a lo que necesitas y no a más variables - así que aunque quieras no puedes cambiar lo que no debes. Y cuando realmente lo necesites, tendrás que averiguar por qué no puedes acceder a una variable- es sólo un descuido, o más a menudo es una variable que necesita trabajo adicional para ser modificada. Si estuviera disponible de inmediato, se olvidaría de ellos, y entonces tardaría mucho tiempo en averiguar por qué el programa no funciona o no funciona como uno quiere.
No intento conseguir nada. Bueno, tal vez entender que no sólo con la POO se pueden escribir proyectos geniales. Y no sólo dominar la POO es un signo de desarrollador. No discuto que se puedan resolver muchas tareas con OOP. Pero hay otros enfoques.
Otra cosa buena de la POO es que poco a poco vas adquiriendo librerías de clases, sobre todo las realmente universales, que te acompañan toda la vida y te facilitan esta vida.
De un proyecto real, realmente funciona. No hay ninguna molestia, sólo hay que controlar el número y el estado de los pedidos/posiciones disponibles. Esta función sólo controla que la posición/orden no esté cerrada/cancelada y la elimina de la lista después del cierre.
Donde gPos es CList<CTrade> gPos
CList y CTrade no son de la biblioteca estándar.
CTrade se hereda de mi propia biblioteca CPosition.
En realidad, a continuación está todo el CTrade que necesitas para que el código de tu proyecto sea legible:
Toda la implementación del manejo de la orden/posición está oculta en el archivo de la biblioteca CPosition de la plataforma.Gracias a todos por participar en el debate. Intentaré profundizar en la POO para comparar realmente las capacidades de ambos enfoques. Me interesa la jerarquía que puede proporcionar la POO, y si su utilidad no queda enterrada bajo su sintaxis, sin duda la adoptaré.
Ayúdate a ti mismo en YouTube. Hay muchas cosas ahí. Sobre todo en inglés, que se te da bien.
No te sobran 45 minutos, Peter. Al principio es muy importante entender de qué está hablando este tipo. Probablemente muchos le discutirán, pero en general tiene razón:
Ayúdate a ti mismo en YouTube. Hay muchas cosas ahí. Sobre todo en inglés, que se te da bien.
No te sobran 45 minutos, Peter. Al principio es muy importante entender de qué está hablando este tipo. Probablemente muchos le discutirán, pero en general tiene razón: