mql5におけるOOP、テンプレート、マクロ、微妙な使い分け - ページ 7

 
Ilya Malev:

私見ですが、悪いことばかりではありません。C#の基本的なコアインターフェースはそれほど多くなく、そのメソッドを1つの基本的なスーパークラスに還元し、必要な人に継承させることができると私は考えています。

必要な人に必要なものを継承する」とはどういう意味でしょうか? クラス全体ではなく、その一部を継承することでしょうか?) そのような関数は知りません
 
Alexey Navoykov:
必要なものを継承する」とはどういう意味ですか? クラス全体ではなく、その一部を継承するのですか?) そのような機能には詳しくないのですが。

そうではなく、多くの仮想関数を 定義し、必要に応じて継承元でオーバーロードするという意味です。

 
Ilya Malev:

そうではなく、多くの仮想関数を 定義し、必要に応じて継承元でオーバーロードするという意味です。

それは完全なカオスであり、コントロールの欠如です。 インターフェースは、「必然的に」ではなく「必ず」実装しなければ ならない抽象的なメソッドを定義します。また、この方法では、どこかのメソッドをオーバーロードするのを忘れた場合、プログラムは何事もなかったかのようにコンパイルされますが、必要なメソッドの代わりにダミーと呼ばれるメソッドが使用されます。
 
Alexey Navoykov:
それは完全なカオスと制御不能です。 インターフェースは、「どうしても」ではなく、「必ず」実装しなければ ならない抽象的なメソッドを定義しています。また、この方法では、どこかのメソッドをオーバーロードし忘れた場合、プログラムは何事もなかったかのようにコンパイルされますが、必要なメソッドの代わりにプログラムが呼び出されることになります。

空白ではなく、「未実装」の例外です。C#では、そこらじゅうにある。

 
Alexey Navoykov:
...どこかのメソッドをオーバーロードし忘れると、プログラムは何事もなかったかのようにコンパイルされますが、必要なメソッドの代わりに空白のメソッドが呼び出されます。 これは正常です...。

ちなみにMQLではそうなっています;(

 
Ilya Malev:

空白ではなく、「未実装」の例外です。C#でも、あちこちにあるようです。

重要なのは、これらのバグはコンパイル時に捕らえることができる(そして捕らえるべきである)にもかかわらず、実行時にバグを捕らえようと提案していることです。
 
Vasiliy Sokolov:

ちなみにMQLではそうなっています;(

彼らの標準ライブラ リのことですか?)
 
Alexey Navoykov:
このようなバグはコンパイル時に捕らえることができる(そして捕らえるべき)のですが、あなたは実行時にバグを捕らえようと提案されています。

クラスのテンプレート<,,,,,,,>のような構造を作るより良いと思います。そんな「階級制度」を構築し終える前に、脳が壊れてしまうのです。

 
Ilya Malev:

クラスのテンプレート<,,,,,,,>のような構造を作るより良いと思います。そんな「階級制度」を構築し終える前に、脳が壊れてしまうのです。

コンパイラで頭を悩ませるよりも、自分のプログラムが正しく動作することが保証され、他の何かではなく、動作するメソッドが呼び出されることを確認する方が先決です。
 
Alexey Navoykov:
コンパイラで頭を悩ませるよりも、自分のプログラムが正しく動作することが保証され、おかしなことではなく、動作するメソッドが呼び出されることを確認する方が先決です。

もし、全体がシンプルなベースクラスを持っていて、それがほとんどどこにでも登場し、その後ダイナミックキャストが行われるなら、うまくいくかもしれません)。

理由: