Errores, fallos, preguntas - página 1332

 
Alexey Navoykov:
Tu consejo no tiene sentido en la práctica. Nadie da nombres idénticos a propósito. El código de la función local vive su propia vida separada mientras que el programa externo vive su propia vida. Y los nombres de las variables externas pueden cambiar con el tiempo y se pueden añadir nuevas variables externas.Y si después, de repente, una de las cientos de funciones tieneuna variable local con el mismo nombre, ¿qué crees que hay que cambiar el nombre de la variable global? No hay que buscar excusas para los errores de los desarrolladores.

No estaba buscando una excusa para los errores de los desarrolladores, pero este error es fácilmente sorteado al no utilizar los mismos nombres de variables que son responsables de los parámetros de entrada cuando se trabaja en un proyecto. Solo cambia el nombre en los parámetros de entrada, dudo que tengas cientos de variables en tus parámetros de entrada y necesites editar todo el código :) la parte principal del código se suele escribir en el punto de entrada del software y no es tan grande, todo se hace mediante llamadas a funciones(métodos). Y para las funciones (métodos) no hay diferencia en el nombre de una variable que se pasa en los parámetros de entrada de la función.

Por supuesto, si escribes código donde las funciones utilizan variables globales, entonces por supuesto, tendrás que cambiar muchas cosas, pero este código está escrito sin ninguna visión, es realmente difícil de modernizar.

Aunque si se mira al desarrollador (MetaQuotes) con un punto de vista de consumidor, claro, se quiere mucho de todo a la vez :) Me gustaría trabajar en un terminal que sea multiplataforma, pero la respuesta a esta petición será una, o se usa lo que se tiene o se pasa de largo :)

 
Konstantin Karpov:

Sólo hay que cambiar el nombre en los parámetros de entrada...

Tienes una visión un tanto frívola. Sólo tienes que cambiarlo así... Luego se añadirá alguna otra función al código en la que coincida el nombre de la variable local y tendrás que volver a cambiarlo, ¿verdad? Un nombre de variable externa no es sólo un montón de letras, tiene un significado específico. A veces hay que pensar mucho para encontrar un nombre conciso y sucinto para él, y se dice - cambiarlo. Y todos los ajustes preestablecidos, así como los ajustes del probador y del optimizador se perderán para este parámetro si se cambia el nombre.

Supongamos que usted insertó alguna función desde algún lugar externo, tal vez ni siquiera fue escrita por usted, por lo que los nombres de las variables locales allí pueden ser absolutamente cualquiera.

 
Alexey Navoykov:

Tienes una visión un tanto frívola. Luego se añade al código alguna otra función en la que la variable local tiene el mismo nombre, y hay que volver a cambiarla, ¿no? El nombre de una variable externa no es sólo un montón de letras, tiene un significado específico. Y todos los ajustes preestablecidos, así como los ajustes del probador y del optimizador se perderán para este parámetro si se cambia el nombre.

Supongamos que usted insertó alguna función desde algún lugar externo, tal vez ni siquiera fue escrita por usted, por lo que los nombres de las variables locales allí pueden ser absolutamente cualquiera.

Haz lo que creas conveniente, pero parece que no has escrito ningún proyecto grande.

No tiene sentido que mire mis definiciones de funciones, porque tengo una clara distinción en el estilo de declaración de los nombres de las variables globales y locales. Por lo tanto, no encuentro problemas como la coincidencia de nombres de variables globales y locales. Lo más importante es que las funciones trabajen su lógica sin colisiones. En tu caso hay un gran PERO, si coincides un nombre de una variable global con un nombre de una variable local, espera sorpresas, que ya has empezado a aclarar.

Por ejemplo, ponga una _ extra en el nombre de la variable local, por ejemplo _iCount. En este caso nunca tendrás problemas con los nombres de las variables, porque se cumplirá lo que me estás tratando de explicar la segunda vez - las variables viven en un ámbito local, donde fueron creadas. Y ninguna variable global en este caso no introducirá ambigüedad en los nombres. Y vamos a cerrar nuestra discusión en este punto.

 

Volviendo a mi post anterior. MT4/845, Windows7/64 bit, script:

#property strict

double d1 = 2.009745110811111111111111111;
double d2 = 3.654;
double d3;
//---
void OnStart()
  {
   d3=d1/d2;
   Print("AA: d3 = ",d3);
   Print("BB: d3 = ",DoubleToString(d3));
   Print("CC: d3 = ",DoubleToString(d3,8));
   Print("DD: d3 = ",DoubleToString(d3,9));
   Print("EE: d3 = ",DoubleToString(d3,10));
}

Resultado:


Administración, añade en DoubleToString que esta función redondea los números en coma flotante a la precisión especificada.

 

Es una buena idea no nombrar las variables locales y de entrada de la misma manera

 
Комбинатор:

Es una buena idea no nombrar las variables locales y de entrada de la misma manera

En el buen sentido, sí, pero a veces cuando arreglas el código de otra persona, conectas tus propias bibliotecas a él, y... bam...
 

Intente continuar la línea en ME en el archivo adjunto sin espacios

Archivos adjuntos:
comment.mq5  1 kb
 
Cuando se discute un tema, ¿está bien poner un enlace a un producto en el Mercado? ¿O eso se consideraría publicidad y estaría prohibido?
 
Yousufkhodja Sultonov:
Cuando se discute un tema, ¿está bien poner un enlace a un producto en el Mercado? ¿O eso se consideraría publicidad y estaría prohibido?
Cada producto tiene dos pestañas: Discusión (para los que están pensando en comprar) y Reseñas (para los que han comprado). Aquí es donde tienen lugar las discusiones sobre el producto.
 

Resultado de compilación cuestionable después del operador ? :

int f()
{
        int array[];
        return ( false ? array : array );
}
void OnStart()
{
        Print( f() );
}
// 0 error(s), 0 warning(s)
Resultado: 65618 (¿cómo se ha puesto así?) y debería haber un error de compilación
Razón de la queja: