JavaScriptパターンを読んで、イイねと思ったことのメモ。
JavaScriptでオブジェクトでないもの
・数値
・文字列
・ブール値
・null
・undefined
これら以外は、すべてオブジェクト。
オブジェクトって何?
→名前のついたプロパティの集まりのこと。
プロパティの集まりとは、キーと値の組のリストのこと
メソッドもプロパティの1つで、つまりは関数のプロパティのことをメソッドと呼んでいる。
JavaScriptには、クラスというものはない。
「クラス継承よりオブジェクトのコンポジションが好ましい」という原則。
前のRubyのデザインパターン本でも強調されていたが、継承するよりは委譲せよ。他のオブジェクトを利用せよ、ということだ。
保守しやすいコードの原則
・グローバル変数の使用を最小にする
特にJavaScriptでは、Webページで使われている広告のJavaScriptやサードパーティ製のJavaScriptライブラリと変数が共有されてしまうため、グローバル変数は予期せぬエラーが発生する可能性が高い。
→したがって、原則として、常にvarを使って変数を宣言するべき。
・for-inループを使ってループを回す時は、hasOwnProperty()メソッドを使ってチェックする。
まだうまく腹に落ちていない。とりあえずメモ。
・暗黙の型変換を避ける
→比較には===や!===を使う。==で比較する時は暗黙の型変換が行われる。
・evalは避ける
まだハラオチしてないが、メモ。
たぶんこの辺はパーフェクトJavaScriptなんかをちゃんと理解した後に読むとしっくり来るんだろう。
・parseInt()
parseIntは"08"みたいに先頭0で始まる文字列を8進数として扱う。
Number("08")
のようにしても文字列を数値に変換できる。
・波括弧は必ず使う。開く位置は直前の文と同じ行にする。
これには超同意。波括弧を使わないで書くコードをたまに見るけど、やっぱり読みづらい。
あとはこれね。
if (true) { // } if (true) { // }
どっちがいいか。JavaScriptは行が正しくセミコロンで終了していないときに、勝手にセミコロンを挿入するらしい。
function func() { return { name:"Batman" }; } //予期せぬ戻り値になる function func() { return { name: "Batman" }; } //というのもJavaScriptでは・・・ function func() { return undefined; { name: "Batman" } } //のように解釈されるから
・空白
一貫性をもたせること。
これは昔からけっこう思うところがあった。
for(var i=0;i<10;i+=1){ // } for (var i = 0; i < 10; i += 1) { // }
私は下の例のほうが好きだし、本でもこちらを勧めている。
とにかく、一貫性が大事だ。
英作文でカンマやピリオドの後に空白を置くのと同じで、JavaScriptではリストの区切りや文の終わりには空白を置く。
・命名パターン
これはイイね!と思ったのは、
privateメソッドを意図するのに、アンダースコアを付加するということだ。
var person = { getName: function() { return this._getFirst() + ' ' + this._getLast(); }, _getFirst: function () { // } }
getNameはパブリックメソッド。_getFirstはプライベートメソッドを表す。
あるいは、アンスコ1個でprotected,アンスコ2個でprivateみたいに。
・コメント
コメントは関数とその引数と戻り値、少し変わったアルゴリズムなどにはつける。
すべての変数につける必要はもちろんない。
読んだ本

JavaScriptパターン ―優れたアプリケーションのための作法
- 作者: Stoyan Stefanov,豊福剛
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/02/16
- メディア: 大型本
- 購入: 22人 クリック: 907回
- この商品を含むブログ (76件) を見る
感謝のプログラミング
今回で感謝のプログラミングは【304時間目】
10000時間まで、あと【9696時間】