ライブラリ: Price_Compare - ページ 4

 
Koldun Zloy:

言ってみよう。マクロの役割とはいったい何なのか?

void OnTick() // フレーミング。
{
  Print("Hello World!");
  
  ::OnTick2();
}

#define OnTick OnTick2

void OnTick() {} // オリジナル
削除済み  

すべてはごまかしだ。関数に必要なコードを挿入するのはそれほど難しいことではない。

実際、あなたはライブラリのユーザーから、関数にコードが追加されていることを隠しているのだ。

他人のプログラムでこのようなトリックに対処しなければならなくなったら、作者を呪うことになるだろう。


そして、ライブラリのマクロの間違った使い方の例です:

#define  CHECK_INIT_SYNC if (INIT_SYNC::Check()) return

void OnTimer( void )
{
  CHECK_INIT_SYNC;

  ::OldOnTimer();
}

このマクロは、この場所に関数の出口があることを隠します。

なぜそんなものが必要なのか?文字数を節約するため?それは本気ではない。


マクロは、条件付きコンパイルや型宣言に使うことができる(通常のtypedefはまだない)。

マクロを使って定数を宣言しなければならないこともある。

それ以外の場合、マクロはコードを混乱させるだけだ。

https://www.mql5.com/ru/forum/170952/page50#comment_5488178。

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.07.20
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Koldun Zloy:

すべてはごまかしだ。必要なコードを関数に挿入するのはそれほど難しいことではない。

実際には、ライブラリのユーザーから、関数にコードが追加されていることを隠しているのだ。

他人のプログラムでこのようなトリックに対処しなければならなくなったら、作者を呪うことになるだろう。

問題は、この解決策の利便性と需要である。この場合、1行でインジケータに同期性を与えたり取り除いたりすることができる。おそらく、あなたが不便だと感じているのでしょう。

そして、あなたのライブラリにおけるマクロの間違った使用例です:

このマクロは、この場所で関数から抜けることができることを隠している。

なぜそんなものが必要なのか?文字数を節約するため?そんなの本気じゃない。

そうやって文脈から外すのは良くない。マクロはすべてのOn関数で使われる。

条件付きコンパイルや型宣言にマクロを使うことは許されている(通常のtypedefはまだない)。

マクロを使って定数を宣言する必要がある場合もある。

それ以外の場合、マクロはコードを混乱させるだけである。

https://www.mql5.com/ru/forum/170952/page50#comment_5488178。

これはどうしたことだろう?

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)


OrdersTotal()を置き換える必要があるとしたら?

削除済み  

そのように文脈を無視して取り上げるのは良くない。マクロはすべてのオン機能で使われている。

私はそれらすべてを見てきた。どの関数でも何の役にも立たない。

これのどこが悪いんだ?

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

これも混乱させるだけだ。

OrdersTotal() を置き換える必要があるとしたら?


OrdersTotal()を 置き換える必要はない。

 
Koldun Zloy:

私はそれらすべてを見てきた。これらすべての機能において、それは何の役にも立たない。

混乱させるだけだ。

OrdersTotal()を 置き換える必要はありません。

聞いた。他の人が掲載されているライブラリを使うのがどれだけ便利で、どれだけの人がそのライブラリのユーザーなのかは知らない。

だから人のことは言えない。おそらく、いつか私はマクロに対して違う態度をとるようになるだろう。今は、あなたの意見には同意できない。