※スマホ対応はしてません。

タグ: 命名

“isFinished”みたいな命名は関数に限定したい話。(JavaScriptおれおれAdvent Calendar 2014 – 07日目)

カテゴリー: JavaScript

JavaScriptおれおれAdvent Calendar 2014 – 07日目分

後から更新。

booleanな値を格納する変数名の接頭辞として”is”を採用しているのをちらほら見かける。

var isFinished = (cond1 && cond2 || cond3);  // 右側適当

個人的にはこの接頭辞、booleanを返す関数だけに使いたい。

var finished = isFinished();

変数側の命名はこないだ書いた。形容詞か、接頭辞”b”を使う。

いや、統一されてれば何でもいいんだけど、でも”is*”は関数で使うのが多い気がして。

※個人の感想です。

変数の命名の話。(JavaScriptおれおれAdvent Calendar 2014 – 16日目)

カテゴリー: JavaScript

JavaScriptおれおれAdvent Calendar 2014 – 16日目

間が空いてしまったけど、ぼちぼち落ち着いてきたので再開します。

割と全体的な命名のお話。なおプロパティの命名も同様。

※例がうまく思い付かなかったので、ちょっとアレかも。思い付いたら後で変更するかもです。

基本は名詞

userとかnameとかageとか、そういう値やオブジェクトを格納するものは名詞にします。

中身がオブジェクトなのか、文字列なのか数値なのか、は空気読む感じ。

動詞と同形なら、名詞を優先

ややこしいのが、名詞であり動詞でもある場合。その場合は名詞を優先します。で、関数の方は別の動詞+その名詞で名付ける。

例えばーそうだな、”sample”とか。オブジェクトなり純粋な値なりはsample、それを抽出する関数はmakeSample()とか。

動詞は関数

実行可能なものは動きそうな名前にしておきます。

これは別記事参照。

“f_”は関数オブジェクト

上記リンク先参照。

形容詞は二値

booleanの値は形容詞にします。他に副詞、形容動詞、過去分詞も。

例えばuser.activeがtrueなら、そのユーザーはアクティブだという事に。user.logginInならログイン中のユーザー、user.frozenなら凍結ユーザー。

オブジェクトを指す場合も

英語だと”the”と形容詞で名詞扱いするじゃないすか。アレですアレ。

よく使うのが”prev”, “next”で、これどっちも形容詞なんだけど、よく一覧で前後の項目を格納してます。

表現しにくい場合は接頭辞”b”

booleanの”b”。要はパッと見でわかれば良いので、うまく簡単な表現を思い付けない場合、あきらめてこれで済ませます。

例えば、直近六ヶ月にログインしたユーザーはuser.loggedInInThese6Monthsじゃなくてuser.b6Monthsとか。あーなんか例えば良くなさげ……。

複数形は配列

userはユーザー情報を格納したオブジェクトで、usersならそのオブジェクトが格納されている配列。

単複同形なら接尾辞”List”

単複同形じゃなくてもこの接尾辞使う事もあるけど。

“at”は時刻

startedAtとかmodifiedAtとか。ただし、中身はDateオブジェクトよりDate.now()で得られる数値が入っている場合が多い。

Ruby on Railsの影響。

“$”はjQueryオブジェクト、”el”は要素

name, $name, elNameみたいな使い分け。

これも別記事参照。

“d”はDeferred、”p”はPromise

jQuery.Deferred()の戻り値と、d.promise()の戻り値。

一文字dをそのまま変数名として採用する場面も多いんだけど、複数のDeferredを一度に扱う場合は接頭辞として使います。

例としては、ユーザー一覧と告知一覧を取得するとき、dUsersとdInformationsにする。的な。そういう。

(Promise論争はここではおいておいてね。)

そんな感じ

です。

関数プロパティの命名の話。(JavaScriptおれおれAdvent Calendar 2014 – 06日目)

カテゴリー: JavaScript

JavaScriptおれおれAdvent Calendar 2014 – 06日目

メソッドに限らず関数オブジェクトをプロパティに設定する場合のプロパティ名についてです。こんな感じで命名してます。

メソッド

controller.start();
dialog.open();
informationView.showDetails();

関数オブジェクトを格納したプロパティって言うと、まあ普通はこれですね。

関数やメソッドは実行可能するものであるから、動詞にするのが自然だと思います。実際そうしてる人が多いと思う。

(さらに…)