2010年02月16日(火)
return文を書く位置について [プログラミング]
またまたプログラミングの話に戻ります。
CやMQL4では、基本的にプログラムは上から下へ順に実行されます。
少しでもプログラミングをかじったことのある人にとっては当たり前かもしれませんが、初心者にとっては当たり前じゃないかもしれません。
システムトレードのプログラムを人が都合よく作ろうと思えば、こんな書き方になるでしょうか?
あるテクニカル指標がある条件になれば買い
あるテクニカル指標がある条件になれば売り
あるテクニカル指標がある条件になれば手仕舞い
売買のルールがお互いに独立していれば、それぞれのルールに順序はありません。
このように意味的な順序はないとしても、プログラムはどうしても上から順に実行されます。
プログラムの実行順に関して次のプログラムを見てください。
int start()
{
double buf[] = {1,2,3,4,5};
Print(buf[1]);
Print(buf[2]);
return(0);
Print(buf[3]);
Print(buf[4]);
return(0);
}
このプログラムでは、return(0)が最後だけでなく、途中にも入っています。
return文は関数の最後に書く「おまじない」と思っている人もいるかもしれませんが、これは、その時点で関数を終了することを意味します。
ですから、プログラムの途中でも return文があれば、そこでその関数は終了し、その後の文は実行されません。
この例では、buf[0]とbuf[1]だけを表示して終わりということになります。
このような簡単な例だと、さすがにわかるでしょうが、長いプログラムになると、意外に気がつかないこともあります。
特に条件分岐の結果によってreturnする場合に見逃しやすくなります。
プログラミングの流儀の一つ(というのは大げさかもしれませんが)として、return文を関数の最後以外に書かないというのがあります。
私の書いたメタトレーダーの本では、途中でreturn文がばんばん出てくるのですが、実は個人的にはそういう書き方はあまり好きではありません。
プログラムが複雑になればなるほど、それぞれの関数を簡潔に書く必要があるので、return文に関するルールも、どこにあるかわからないというのではなく、最後にしかないという方が、間違いが少なくてすみます。
ただ、そうすると、{}のブロックで囲んだ入れ子が多くなって、逆に見にくくなるということもあります。
結局は、どちらがいいということではなく、自分に合った書き方を身につけることが重要なんだと思います。
Tweet
Posted at 15時39分





