Bibliotecas: Price_Compare - página 2

 
fxsaber:

É claro que você pode! Mas como isso seria feio?

Na biblioteca TypeToBytes sem macros, isso não seria apenas assustador, mas também não seria conveniente. Ou seja, a biblioteca poderia ser simplesmente jogada fora.

Acho que tudo se resume à proficiência na linguagem. Quando eu não conhecia/entendia a OOP, eu não a usava. Tudo mudou.

E o que o nível de proficiência tem a ver com isso? Estamos falando de uso, e isso é depuração de código, o que é difícil com macros...
 
coderex:
E o que o nível de proficiência tem a ver com isso? Estamos falando de uso, e isso é depuração de código, o que é mais difícil com macros...

As macros são usadas onde a depuração não é necessária - em código limpo.

O compilador sempre recebe código limpo sem macros. Se você pudesse obter esse código limpo (salvá-lo em um arquivo), você o veria.

Os desenvolvedores podem fazer isso, mas é improvável que o façam (a opção -E em C++).

 
fxsaber:

As macros são usadas quando a depuração não é necessária - código limpo.

O compilador sempre recebe código limpo sem macros. Se você pudesse obter esse código limpo (salvá-lo em um arquivo), você o veria.

Os desenvolvedores podem fazer isso, mas é improvável que o façam (tecla -E em C++).

Você realmente não me entendeu ou é teimoso como costuma ser ao se comunicar com desenvolvedores, defendendo seu verdadeiro ponto de vista? Acima, eu escrevi para você que eu aderi à opinião de programadores que estão muito à nossa frente nessa esfera, e também escrevi especificamente dois problemas - um menor relacionado à inconveniência de ler o código, o segundo problema sério na depuração do código, se você realmente não entendeu, então examine o código em que as macros são usadas com um depurador....

esse é o fim desse jalivar desnecessário.

 
coderex:

Você realmente não me entendeu ou é teimoso como costuma ser ao se comunicar com desenvolvedores, defendendo seu verdadeiro ponto de vista? Acima, eu escrevi que concordo com a opinião de programadores que estão muito à nossa frente nessa esfera, e também escrevi especificamente dois problemas - um menor relacionado à inconveniência de ler o código, o segundo problema sério na depuração do código, se você realmente não entende, então examine o código em que as macros são usadas com um depurador....

Respeito totalmente seu ponto de vista e os argumentos são claros. Infelizmente, o metaeditor.exe não tem a opção -E. E ele poderia criar um código limpo que poderia ser lido e depurado com total conveniência.

Enquanto escrevo algo não trivial, crio um código extremamente ruim. Percebo que a primeira coisa é fazer com que ele funcione (e os erros dos próprios desenvolvedores são detectados nesse estágio). Nem sempre é óbvio como abordá-lo melhor do ponto de vista arquitetônico. Há redesenhos sérios, pois há pouca percepção de alguns pontos no início do trabalho. Após a depuração, o código torto é transformado em um código mais lógico. Novas funções e macros podem ser criadas. O objetivo é tornar tudo lógico e remover quaisquer repetições de lógica/código. O código fica bonito, conciso e lógico.

A depuração é realmente difícil quando se trata de modelos. Os modelos são um pré-processador complicado. E é extremamente difícil de depurar. Por exemplo, ao escrever um supermodelo TypeToBytes, a depuração era quase impossível. Tampouco era possível escrever um código errado e depois penteá-lo para fora. Era preciso manter tudo na cabeça e saber muito bem o que estava acontecendo e onde. Uma espécie de autoexame para compreensão.

É por isso que há situações em que você não pode prescindir dos modelos e do pré-processador. E os defensores do código puro provavelmente não imaginavam essas situações.

 
Automated-Trading:

Preço_Comparar:

Autor: fxsaber

Interessante.

#define EPSILON (1.0 e-7 + 1.0 e-13)
Por que seu EPSILON está definido como esse valor?


 
Alain Verleyen:

Por que seu EPSILON está definido com esse valor?

Não me lembro...

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Альтернативные реализации стандартных функций/подходов

fxsaber, 2016.09.02 10:58

double MyNormalizeDouble( const double Value, const uint digits )
{
  static const double Points[] = {1.0 e-0, 1.0 e-1, 1.0 e-2, 1.0 e-3, 1.0 e-4, 1.0 e-5, 1.0 e-6, 1.0 e-7, 1.0 e-8};
  const double point = digits > 8 ? 1.0 e-8 : Points[digits];
  const long Integer = (long)Value; // чтобы не создавать крайне медленный относительный epsilon

  return((long)((Value > 0) ? (Value - Integer) / point + HALF_PLUS : (Value - Integer) / point - HALF_PLUS) * point + Integer);
}
 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Implementações alternativas de funções/abordagens padrão

fxsaber, 2016.09.02 10:58 AM.

Agora funciona sempre corretamente, mas é mais rápido que o original em apenas 10%
double MyNormalizeDouble( const double Value, const uint digits )
{
  static const double Points[] = {1.0 e-0, 1.0 e-1, 1.0 e-2, 1.0 e-3, 1.0 e-4, 1.0 e-5, 1.0 e-6, 1.0 e-7, 1.0 e-8};
  const double point = digits > 8 ? 1.0 e-8 : Points[digits];
  const long Integer = (long)Value; // para não criar um epsilon relativo extremamente lento

  return((long)((Value > 0) ? (Value - Integer) / point + HALF_PLUS : (Value - Integer) / point - HALF_PLUS) * point + Integer);
}
#define  HALF_PLUS (0.5 + 1.0 e-7)
 

Por que as macros de pré-processador são ruins e quais são as alternativas?

Why are preprocessor macros evil and what are the alternatives?
Why are preprocessor macros evil and what are the alternatives?
  • stackoverflow.com
I have always asked this but I have never received a really good answer; I think that almost any programmer before even writing the first "Hello World" had encountered a phrase like "macro should never be used", "macro are evil" and so on, my question is: why? With the new C++11 is there a real alternative after so many years? The easy...
 
Alain Verleyen:

Por que as macros do pré-processador são ruins e quais são as alternativas?

Não são as macros que são ruins, mas seu uso analfabeto.

[Excluído]  
fxsaber:

O mal não são as macros, mas seu uso analfabeto.

Esse é o ponto, as macros não estão protegidas contra o uso indevido.

Elas surgiram quando não havia classes, modelos ou constantes.

Agora, seu uso não faz sentido.