Home English

Kuina-chan

くいなちゃんOct 17, 2017


プログラミング言語Kuin」の命名と予約語についてです。

Kuin命名規則

多くのプログラミング言語では、関数名や変数名の単語の略し方が不統一だったり、同じ概念に対して異なる単語が使われていたりと、ユーザにとって余分に複雑になっています。
そこでKuinでは、なるべく一貫した命名になるように命名方法について指針を定め、標準ライブラリなどでこれを守るようにしました。 これを「Kuin命名規則」と呼びます。
ここではKuin命名規則について順に紹介します。

大文字と小文字の規則

Kuinではソースコード中の大文字と小文字を別の文字として区別します。 Kuin命名規則では、大文字と小文字の使用について大文字と小文字の規則のように定めます。
  • 基本的に、小文字で命名して複数の単語が連結しているときには2番目以降の単語の先頭を大文字にする。
  • 「XML」のように頭文字から成る略語は、それ全体で1つの単語とみなす。
大文字と小文字の規則
例えば、「exampleCorrectName」「readXml」などとします。
設計の理由
 このルールは「キャメルケース」と呼ばれますが、このルールを採用した理由はタイプ数もコード量も少なくなるためです。
 また、グローバル変数とローカル変数とがぶつからないように別の命名規則を定めることがよく行われますが、Kuinではグローバルなものには先頭に「@」を付けるという構文ルールがあるためキャメルケースで統一しています。

型名の接頭辞の規則

列挙型とクラスの型名は、型名の接頭辞の規則のように命名します。
  • 列挙型名やクラス名など、ユーザが定義した型名の先頭は大文字にする。
型名の接頭辞の規則
例えば、「example color」という列挙型を定義したいときには、名前を「ExampleColor」とします。 ただし変数側は「exampleColor」などと定義します。
設計の理由
 クラスを定義してそれと同名の変数を作りたくなるというケースはしばしばありますが、そのときに名前がぶつかるのを防ぐためにこのようなルールにしています。

ソースコード名の規則

Kuinでは他のソースコードを参照するときに、ソースコード名をソースコード中に記述することがありますが、このときのソースコード名はソースコード名の規則のルールで記述します。
  • ソースコード名はすべて小文字で命名する。
  • 複数の単語が連結しているときは間に「_」を挟む。
ソースコード名の規則
例えば、「example_kuin_code」などとします。
設計の理由
 Windowsではファイル名の大文字・小文字を区別しないため、同じファイル「ABC」に対し「abc」や「Abc」など別ファイルと扱われる余地があって不具合の元になりましたので、すべて小文字で統一しました。

略語の規則

プログラマはしばしば、なるべくタイプ数を減らしたりコードを短くするために、単語を省略形で書いてきました。 しかしそれぞれが独自に単語を省略したため、元の単語が判らなくなることが頻発しています。
そこでKuin命名規則では、単語のよくある省略形を「Kuin略語辞典」としてまとめ、ここにある単語は必ずこの省略形で用いるという指針を定めました。
略語の基準は略語の規則の通りです。
  • 4文字以下は省略しない。
  • プログラミングにおいて頻出の単語は略す。
  • 慣習的によく略されている単語は略す。
  • 略語が重複したり元の語が判りにくくなる場合は、略さないか別の同義語を使う。
略語の規則
設計の理由
 全く省略しなければ混乱のおそれもありませんが、プログラムが長くなることはそれだけ複雑になって把握しづらくなりますので、可能な限り省略する方針にしました。

Kuinの予約語

これ以外にもいくつかの単語は予約語として、変数名や関数名などの識別子に使うことができません。
Kuinの予約語は全部でKuinの予約語の通りです。
Kuinの予約語
alias assert bit16 bit32
bit64 bit8 block bool
break case catch char
class const dbg default
dict do elif else
end enum false finally
float for func if
inf int list me
null queue ret skip
stack switch throw to
true try var while
設計の理由
 Kuinは識別子とそうでないものが構文的に区別可能なため、実は「if」や「for」などを変数名として許可しても問題になりません。 ただやはり変数名に「if」などを使うのは混乱の元になりますので、予約語として弾きました。
1508205510ja