メインコンテンツまでスキップ

推奨されるコーディング手法

コーディング規約

このページでは、Eggplant Functionalスクリプトを作成するためのベストプラクティスについて説明します。


スクリプトヘッダー

スクリプトやスニペットの冒頭には、スクリプトの概要を明確にするためのヘッダーを添付しましょう。また、構成管理情報をこのヘッダー部分に配置することにより、スクリプトバージョンを管理できます。具体的には、スクリプト名、パラメーター/戻り値のリスト、作成者、バージョン、スクリプトの変更履歴のリスト化がなどが有効です。

(**
UserData - 新しいユーザーデータフィールドを設定
@Params Username - ユーザーネームを説明する文字列
@Returns SaveFlag - フォーム保存フラグのブール値
@Version - 0.2 09/02/2022
@ChangeReason - AUB-11098 Review - アサーション追加
**)

命名規則

一貫性を保つため、またEggplant Functionalはスクリプト内の名前にスペースを許可しないため、関数名と変数名はcamelCaseであるべきです。これにより、他の人がコードを読みやすくなり、スクリプトのコーディングに一貫性が得られます。

変数の命名(ローカル、グローバル、ユニバーサル変数)は、コードを再訪する際に容易に読めるように簡潔かつ説明的であるべきです。一語のあいまいな文字の使用は避けるべきです。

画像は、それらが属するアプリケーションとアプリケーション内のページ/スクリーンに関連して保存されるべきです。画像を説明的に保存し、開発者が利用可能な既存画像の有無を簡単に確認できるようにすることにより、重複を避けることができます。

非推奨例
推奨例
// ブラウザを起動する関数
to function_a b, c
// 実行ダイアログを開く
typetext windowskey, "r"
wait 1

// ブラウザとURLを入力
typetext b && c, returnkey

// ブラウザロゴを待つ
waitfor 20, image:"image1"
end function_a
// ブラウザを起動する関数
to launchBrowser browser, url
// 実行ダイアログを開く
typetext windowskey, "r"
wait 1

// ブラウザとURLを入力
typetext browser && url, returnkey

// ブラウザロゴを待つ
waitfor 20, image:"logos/browsers/" & browser & "/Home"
end launchBrowser
画像フォルダ:
画像フォルダ:

コメント

コードの可読性を担保するために、スクリプト全体にコメントを付与するのがよいでしょう。一般的に、スクリプト内の各関数には、関数のフロー/構造を詳述するコメントが含まれるべきです。コメントブロックは次の形式であるべきです:

// コメント詳細

複雑なデータ構造が使用されていて、データ要素の命名が自明的となっていない場合においては、内容の定義が含まれるべきです。

以下に同一のコードブロックを二つ比較しています:

非推奨例
// 結果ファイルを作成して開く
put formattedTime("%d%m%Y_%H%M") into timestamp
copy file ResourcePath("EggplantSampleData.xlsx") as ResourcePath("ResultsData_"&timestamp&".xlsx")
set spreadsheet to Workbook(ResourcePath("ResultsData_"&timestamp&".xlsx"))
set sheetData to spreadsheet.Worksheet("Sheet1")
推奨例
// 結果ファイル名で使用するタイムスタンプを計算
put formattedTime("%d%m%Y_%H%M") into timestamp

// 結果ファイルのテンプレートをコピーしてタイムスタンプを使用して名前を変更
copy file ResourcePath("EggplantSampleData.xlsx") as ResourcePath("ResultsData_"&timestamp&".xlsx")

// 結果ファイルの新しいヘッダーを作成するためにスプレッドシートを開く
set spreadsheet to Workbook(ResourcePath("ResultsData_"&timestamp&".xlsx"))

// タブを設定
set sheetData to spreadsheet.Worksheet("Sheet1")

スクリプト内にハンドラーが存在する場合、以下のコメントブロックをハンドラーの前に配置し、入力と出力のパラメーター(あれば)を説明するべきです:

(**
ハンドラー名 - ハンドラーの説明
@Params パラメーター名 - パラメータータイプと説明
@Returns 戻り値 - 結果のタイプと説明
**)