こんにちは~。
MQLをマスターしたくて頑張ってプログラムを作るもトンチンカンなソースコードなためMQL神(架空の神)にそっぽ向かれているりょうです。
先日、MQLの『プロジェクト』を作成するという機能によりソースコードが見やすくなってやったー!という話をしておりました。
今回はMQLの機能を利用するという事ではなく、ソースコード自体を整えて見やすくしていきましょう、という事でプログラミング歴2,3ヶ月の僕の愚かなソースコードをお見せして改善してゆく試みです。

未熟なので見せるの恥ずかしいんですが



ガン見してやろう
ソースコードの整理整頓『リファクタリング』
作成したソースコードを整えていくことを『リファクタリング』といいます。
リファクタリング・・・ソフトウェアの挙動を変えることなく内部構造を整理すること
(人間にとって読みやすくすること)
リファクタリングを一言で言うと↑上記の意味となります。
プログラムの挙動に問題がなくても無駄なコードがあったりわかりにくい構造だったりと、最適なコードとは限らないので、このようなコードを整理してゆく事を目的に行うのがリファクタリングです。
重複が多く無駄に複雑なコードにリファクタリングを行うと、
①バグが発生しやすく、バグの修正も困難なコードのリスクを解消
②他人はもちろん自分が見直す際の理解のし辛さを解消し、引継ぎなども容易に
③コードの理解が容易となり開発速度が向上し、修正や機能追加が円滑に
といったメリットがあります。



リファクタリングは良いことだらけにゃ
リファクタリング実践
それでは、僕の最初に作ったコードを見てみます。


こちらを修正していきましょう。
こちらは『指定したローソク足がピンバーの時はtrueを、ピンバーでなかったらfalseを返す』関数です。
まずこちらの関数、『PinBar = true;』の部分についてですが、PinBarにtrueが入った後はPinBarの中身が再度Falseに変わることはありません。
この関数自体は判定を1回しか行わず、if文の結果でtrueかfalseを返すかが決まるので、以下のように書き換えることができます↓。


続いて、この文はif文を使っていてelseも使うことができるので以下のように書き換えられます↓。


こうすることでPinBarを宣言している行がいらなくなります。
あわせてif文を整形して、最終的に以下のようなソースコードに修正できました↓。


最初と見比べてみると、とてもスッキリしています。





さぁ、ここで今までの挙動と同じか確認するんだよ



そうだ、こまめにやっとかなきゃ
ここでプログラムの挙動が変わってしまってはいけません。
面倒ですが必ずこまめに確認をしましょう。
リファクタリングは小分けで修正作業をし、その都度こまめにコンパイル→テストを行う!
関数を1つリファクタリングできたところで、今回はここまでとします!
新たにここでお話しできそうな愚かなソースコードがあったらまたご紹介します~。



りょうは愚かだからいっぱいあるにゃ



うるせー!