#まえがき
LSLにはPythonのPEP8のような明確な規約がなく、作者によってコーディングの規則が違います。
そこで、各自の規則を考える際の手がかりになるように、慣例的に用いられているコーディング規約についてまとめました。
重要なことは可読性と一貫性を保つことです。
##インデント
インデントは半角スペース4文字
もしくはそれと同じ幅のTAB文字
##名前の表記法
命名には以下の三つのタイプがよく用いられます。
- スネークケース (snake case)
- ローワーキャメルケース (lower camel case)
- アッパーキャメルケース (upper camel case)
###スネークケース (snake case)
単語を**_
**(アンダースコア)で区切る。
例:snake_case, example_name
###ローワーキャメルケース (lower camel case)
最初の単語は小文字、それ以降の単語の先頭を大文字で区切る。
例:lowerCamelCase, exampleName
###アッパーキャメルケース (upper camel case)
単語の先頭を全て大文字で区切る。
例:UpperCamelCase, ExampleName
より詳しい説明は以下の記事などが参考になります。
「変数/クラス名の命名規則に使われる記法の分類(Qiita)」
「キャメルケースで省略語をどう扱うか(Qiita)」
#命名規則
##基本規則
###意味を読み取ることができる名前
- 名称から役割、意味が読み取られる名前を付ける。
- info, data, temp, str, bufなど曖昧・抽象的な名前は避ける。
- 意味が分かる名前を付けるようにし、単語の省略はしない。
- (ただし、十分にスコープの狭いローカル変数やループカウンタなどの場合、可読性を損なわない範囲で省略形が使われることがある。)
###名称の対称性
対照的な名称は正しい組み合わせで使用する。
A | B | A | B | |
---|---|---|---|---|
add | remove | put | get | |
insert | deflete | up | down | |
get | set | show | hide | |
start | stop | source | target | |
begin | end | open | close | |
send | receive | increment | decrement | |
first | last | old | new | |
get | release | next | previous |
##変数名
その機能を表すために必要十分な短いものとする。
スネークケース か__ローワーキャメルケース__を用いる。
###グローバル変数
グローバル変数の先頭には、g_
もしくはg
をつけてもよい。
例:g_owner_key, g_ownerKey, gOwnerKey
###ローカル変数
グローバル変数と区別するために、関数内のローカル変数には、先頭に**_
**(アンダースコア)をつけてもよい。
例:_channel, _message
###定数
すべて大文字にして**_
**(アンダースコア)でつなぐ。
SECONDS_PER_DAY, MAIN_MENU_CHANNEL
###ループカウンター
スコープが狭いループカウンターにi, j, k
という名前をこの順に使う。
##関数名
__ローワーキャメルケース__か__アッパーキャメルケース__を用いる。
変数がローワーキャメルケースなら、関数はアッパーキャメルケースを使うというように、変数と関数のスタイルをわけるのが望ましい。
先頭の単語は動詞にする。
###属性を取得する関数
getObject()
findUser()
###属性を設定する関数
setParameter()
###boolean値を返す関数
形容詞、is + 形容詞、can + 動詞、has + 過去分詞、三単現動詞、三単現動詞 + 名詞。
isEnabled()
isEmpty()
containsKey()
##リンク