1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HeliScriptの個人的なコーディング規約

Last updated at Posted at 2025-03-23

Hikky所属のうめじです。
Vket Cloudでコンテンツ開発を始めて、1年になろうとしています。
その中で、個人的なコーディング規約をコツコツと書き溜めまてきました。
その内容が少しはお役に立つかもと思い公開します。

また、C# のコーディング規約を元にしているので、C#ユーザーは一読するだけでもC#との違いがイメージしやすくなると思います。

個人的ルールなので、適用する必要は全くありません。
また2025/3現在のHeliScript仕様にもとづいた記事となります。

基本設定

アクセス修飾子のprivate は省略する

HeliScriptはデフォルトがprivateのため

クラスのフィールドは、定数以外はpublicにしない

カプセル化の促進のため

グローバル変数とグローバル関数はなるべく使わない

HeliScriptではクラスの外で変数と関数の定義が可能です。
追跡が困難になるため、なるべく使わない

記法

メンバー変数 _fieldMemberは _付きのローワーキャメルケース

定数名 HogeNameはパスカルケースをつかう

readonlyな変数 _HogeNameは _付きのパスカルケースにします。

HeliScriptはreadonlyに非対応のため、命名規則として変更すべきでない変数を扱います。

Heliscriptでは型と同じ変数名で宣言できないため、_をプレフィックスします

HogeClass HogeClass; //コンパイルエラー
HogeClass _HogeClass //ok

グローバル変数はg_をプレフィックスする

const変数 の場合はg_付きのパスカルケース
可変変数はg_付きのキャメルケース

グローバル関数の先頭の文字は小文字にする

sdkが用意しているユーティティ関数も先頭は小文字になっています
例: hsSystemWriteLine()

delegate型の名前には、前にfと後ろにCallbackをつける

コールバック関数 function Callback 由来です。
また、fCallbackの間にパラメーター名を入れる

delegate void fJsValCallback(JsVal);
fJsValCallback callback;

命名

Item型の変数名はタイプをいれる xxItem

HeliscriptはItemという型で多くの種類を宣言できるため、変数名にタイプをつけると分かりやすくなります。

例: Field TypeのItemならfieldItem、Object TypeならobjectItem

コンポーネントクラスの命名は_Componentをサフィックスする

HeliScriptは通常のClassの他にComponentの定義が可能です。
Classと同じように使用できるため、_Componentをサフィックスすることで判別がつきやすくなります。

component SomeGimmick_Component
{
    public SomeGimmick_Component()
    {
        Wall = new Wall();
    }
}

class Wall
{
}

引数付きでクラスを初期化したいときのメソッド名は Construct

HeliScriptではパラメーター付きのコンストラクタを定義できません。
そこで通常のメソッドで初期化用のデータを渡す必要があります

コーディングガイドライン

規約ほど厳密に管理していないものです

グローバルな関数や変数を記述するファイル名はキャメルケースにする

例:helApi.hs

アプリケーション層のクラスの命名

Canvasを使わないケース: 〇〇Gimmick_Component
Canvasを使うケース: 〇〇Presenter_Component

hsItemGetを使って取得したくなるようなItemはクラス化する

クラス化しないとアプリケーション層のクラスが肥大化しがちになります
UI操作も可能なEntityクラスとして位置付けると便利です。(ただし、通常のEntityと見分けるためにUIをプレフィックスします)

Canvasを使用するギミックは全てアクティビティにする

GUIを実装するときはアクティビティを活用すると便利です。
また、メインシーンとアクティビティとの疎通は文字列での指定になるため、アクティビティで完結させた方が結果的に工数が減る印象です。

hsItemGetよりhsItemGetOwnSceneを使う

hsItemGet はアクティビティからメインシーンのアイテムを取得するときにも使えます

hsItemGetOwnScene を使用することで同じVM(仮想マシン)のItemを取得している意図がわかりやすいです

疑似的なstaticメソッドとして、St-をプレフィックスする

現状HeliScriptでstatic記法は使えません。

自作のユーティリティ関数の実装コストが高くなってしまうため、クラス内に疑似的なstaticメソッドを置くことを許容します。

void StSystemAssert(bool condition, string errorMessage)
{
    if (!hsSystemIsDebugMode()) return; 
    if (condition) return;
    hsSystemWriteLine("Error: %s" % errorMessage);
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?