EasyLanguage はこれといったコーディングルールがなくて、みんながいろいろなスタイルで書いているみたいです。ここでは、できるだけモダンな言語のルールに似たコーディングルールを定義してみます。
スペース
- インデントは半角スペース x4 で行う(タブは使用しない)。
大文字・小文字
- 小文字で始める
- 制御構文:
if、begin、andなど - プリミティブ型名:
bool、double、null、スキップワード(a、atなど) - 変数定義:
input:で宣言する入力変数やvar:で宣言するローカル変数
- 制御構文:
- 大文字で始める
- 関数:
AverageFC、StdDevなど(ユーザー定義関数を含む) - 売買命令:
Buy、SellShortなど(関数名っぽいので大文字で) - 組み込み変数:
Open、Close、CurrentBar、Date、Timeなど
- 関数:
- すべて大文字
- 定数:
const:で宣言するもの
- 定数:
変数宣言のセクション名
入力変数は input:、定数は const:、変数は var: を使う(一番短い記述のものを採用)。
input:
iPrice(Close) [DisplayName = "Price",
ToolTip = "Enter an EasyLanguage expression."];
const:
BASELINE_COLOR("Green");
var:
double myAvg(0),
HorizontalLine myLine1(null),
HorizontalLine myLine2(null);
// ここから本文上記では、入力変数のプレフィックスに i、ローカル変数のプレフィックスに my を付けていますが、付けなくても OK(myAvg の代わりに avg とかでよい)。
ただし、定義済みの変数名や関数名と被るのを避けるために、プレフィックスを付けるのをオススメします。
改行位置
thenやbeginは基本的に同じ行に続けて記述、end;は単独行に記述。
if AlertEnabled and alertCondition then begin
if alertCond1 then
Alert("Close crossed under high retrace")
else
Alert("Close crossed over low retrace");
end;ただし、関数(メソッド)定義の場合は、begin の前に var 定義が挟まるので、その場合は begin は単独行に記述します。
method void printRgb(double inColor, string inName)
var:
Color objColor;
begin
objColor = Color.FromARGB(inColor);
Print(string.Format("{0}: {1} ({2},{3},{4})",
inName, objColor.Name, objColor.R, objColor.G, objColor.B));
end;