感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

JavaScriptの書き方。

スポンサーリンク

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パターン ―優れたアプリケーションのための作法

JavaScriptパターン ―優れたアプリケーションのための作法

感謝のプログラミング

今回で感謝のプログラミングは【304時間目】
10000時間まで、あと【9696時間】