2023/12/02

命名規則の例(LotusScript)

先日投稿した ビジネスアプリ開発で大切なこと の記事の中で、コーディングルールについて紹介しました。その具体例として、今回は、命名規則についてまとめます。

命名規則は、プログラム内の変数や関数、フォームやビューなどの設計要素など用途は様々ですが、今回は一番わかりやすい LotusScript の変数宣言に絞って記述します。

ほとんどの開発者は、ご自身で何らかのルールに基づき命名されていると思います。学生の頃、すべての変数を某ガン〇ムのモビルスーツ名を変数にしているプログラムに出くわしたことがあり、変数の用途を理解するのに四苦八苦したことを覚えています。しばらくして、数が足りなかったのでしょうね、途中からキャラ名に切り替わっており、ますます混とんとしたコードになっていました...

ビジネスでは、このようなことがないよう、他のメンバーでもガ〇ダムにくわしくない人でもわかりやすい名前を付ける必要があります。

その一例として、私が通常使用している命名規則を紹介します。


命名規則の構成

変数は、値やオブジェクトを一時的に保管しておく器のようなものです。命名するときはその変数の中身が想像できるような名前を付けます。短い名前で用途が明確になるとすっきり、わかりやすいプログラムになります。

私が利用している命名規則では、1つの変数名は4つのパートに分けて考えます。

[接頭語][タグ][基本名][接尾語]

各パートの用途や役割は次の通りとしています。

接頭語 スコープやコーディング上の用途を指定
タグ 変数の型を指定
基本名 変数名の本体
用途や役割を簡潔に表した一つまたは複数の単語で構成
接頭語やタグと区別するため単語の大文字で始める
接尾語 類似する変数が複数必要となるなど、基本名が重複する場合に指定
アンダースコアを使って、基本名と区別するとわかりやすい

ただ、このルールを必須とするとすべての変数が長くなり、コードが見づらくなります。そこで、ループ変数(ex. i, n など)のようにコーディング上短い変数名の方が可読性が上がる場合は例外としています。

また、変数の数が少ない場合は、タグだけでもコードの理解に支障はないので、基本名も必須とはしてません。要は、変数の用途がわかれば OK という比較的 ”ゆるい” ルールとしています。


接頭語

スコープは、その変数が有効な範囲のことです。例えば、スクリプトライブラリ内に宣言された変数が Public の場合、そのライブラリを利用するプログラムからアクセスできます。これは、外部から値が変更されることがあり得ることになり、この変数を利用する場合に注意する必要があります。

関数の引数の場合、値が関数内でセット(または変更)されるのか、呼び出し元から値提供されるだけなのかを明示すると仕様がわかりやすくなります。入出力インターフェースを明確にする効果があり、関数の利用者に仕様を伝えやすくなります。

このように、変数がプログラム上でどのようなふるまいをするのか指定する部分が接頭語となります。


なお、スコープや関数の引数に関しては、上記の説明だけではわかりにくいですよね。別の機会に掘り下げて説明したいと思います。


タグ

タグは変数の型を表します。

例えば、コードを表す変数を定義する場合、sCD だと文字列(string)、iCD だと数値(integer)が入っていると表現できます。Notes Object Class の場合であれば、NotesDocument は nd、NotesDatabase は ndb と決めておけば、その変数の中身(値の種類)が明確になります。

このタグに当たる部分は、実践されている方は多いかと思います。


基本名

変数の用途や役割を表す部分です。先ほどのコードを表す変数 sCD を例にすると、CD が基本名となります。

末尾で紹介する命名規則では、各パートの役割と並び順を規定するにとどめており、基本名の付け方までは規定していません。ただ、この基本名は開発者によりばらけやすく、用途を不鮮明になりやすい部分です。

例えば、”事業所” を表す変数を考えます。変数名を英語でつける場合には、次のような単語が想定できます。

  • office
  • shop
  • location
  • place
  • branch

ただ、その企業にとって ”事業所” という言葉は工場や営業所を含む総称であった場合、そぐわない単語もあります。また、ローマ字で Jigyosho するかもしれませんし、Jigyousyo とする開発者がいるかもしてません。開発メンバーに外注が入るとこのような事象が起こりやすいといえます。

これを避けるため ”事業所” は "JIS" を基本名とすると事前に決めておき共有することで、的外れな命名やブレを抑制できます。社内で共通認識がある単語の場合、用語集のような命名表を事前に用意しておくのもいいかもしれませんね。


接尾語

同様の用途の変数を複数作成する場合、基本名までが同じとなります。

例えば、ドミノディレクトリのユーザ文書をビューから順に取得するプログラムを作っていたとします。処理中の文書が ndUser という変数だったとすると次の文書を保存する変数を定義するなら ndUser_Next、 前の文書を表す変数は  ndUser_Prev とします。この ”_” 以降が接尾語となります。


命名規則のサンプル

このブログを書くにあたり使用している命名規則を別途まとめました。特に重要視している接頭語とタグについて整理しています。

この投稿と重複する部分もありますが、以下のリンクより確認ください。

命名規則:LotusScript (変数)


例えば、先日投稿した『Notes - Excel 連携:#26)罫線の設定 ②』という記事で作成した関数を例に挙げると、変数を見るだけで次のような情報が判別できます。


今後掲載するサンプルコードもこの規則に従い作成しますので参考にしてください。なお、このリンク先の命名規則は、将来改変する可能性があります。場合によっては、この記事と食い違うことになるかもしれません。予めご了承ください。


0 件のコメント:

コメントを投稿