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

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

JavaScriptの設定オブジェクトパターンやコールバックパターンについて。

<スポンサーリンク>

JavaScriptの関数の引数にアクセスする

JavaScriptで実引数にアクセスするには、argumentsオブジェクトを使う。
以下のサンプルのように、引数の値にアクセスすることができる。

function hoge() {
	console.log(arguments.length);
	console.log(arguments[0]);
	console.log(arguments[1]);
}

console.log(hoge("fuga", "foo"));
// > 2
// > fuga
// > foo

JavaScriptのスコープ

前の記事でも書いたけれど、JavaScriptのスコープは2つだけ。

  • グローバルスコープ
  • 関数スコープ

関数の外で宣言した名前はグローバルスコープとなる。

コールバック関数って何?

コールバックと呼ばれるプログラミング技法。
それは、読んでほしい関数やオブジェクトを渡しておき、必要に応じてそれらを呼んでもらう技法の事である。
呼ぶ側と呼ばれる側の依存性が反転することから、制御の反転とも呼ばれる(IoC:Inversion of Control)
関数はオブジェクトであるため、他の関数に引数として渡すことができる。

var nameSets = ["sho322", "mizky", "yoshida", "takashi", "sho322", "yuki"];

function renameElement(element, index, array) {
	if (element == "sho322") {
		array[index] = "renamed!!";
	}
}

console.log(nameSets);
// > [ 'sho322', 'mizky', 'yoshida', 'takashi', 'sho322', 'yuki' ]

nameSets.forEach(renameElement);

console.log(nameSets);
// > [ 'renamed!!', 'mizky', 'yoshida', 'takashi', 'renamed!!', 'yuki' ]

関数が引数として渡されているのがわかる。

設定オブジェクトパターン

これは覚えておきたいと思ったのが、設定オブジェクトパターン。
これは、増えた引数を整理するために使える。

関数の引数に色々と渡していたら、保守の段階で、渡したい引数が増えたりすることは無いだろうか。
本の例だと、

function addPerson(first, last)

としていたものに、誕生日や性別を渡したくなるとき。

function addPerson(first, last, gendar, birthday) 

みたいにする。
こうすると、どんどん引数が増えていって、不便になっていってしまう。
こういうときのために、パラメータをひとつにまとめてオブジェクトにするアプローチを「設定オブジェクト」パターンという。
これはJavaでも使えるよね。引数にBeanを渡せばいいもんね。
サンプルはこんな感じ。

var addPerson = function(personConf) {
	console.log(personConf);
	console.log(personConf.name);
	console.log(personConf.job);
}

var personConf = {
	name: "sho322",
	first: "hoge",
	last : "fuga",
	job :"programmer"
};

addPerson(personConf);
// > { name: 'sho322', first: 'hoge', last: 'fuga', job: 'programmer' }
// > sho322
// > programmer

引数にオブジェクトを渡したら、スッキリした。
設定オブジェクトの利点は以下の通り。

  • パラメータの順序を覚える必要が無い
  • オプションのパラメータを安全に省略できる
  • コードが読みやすく保守しやすくなる
  • パラメータの追加や削除が簡単になる

欠点は以下の通り

  • パラメータの名前を覚える必要がある
  • プロパティ名はミニファイされない

(JavaScriptパターンp.82より引用)

勉強した本

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

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


読むたびに新しい発見がある素晴らしい本。
パーフェクトJavaScriptと一緒に読むと、相互に理解が深まる。
買ってよかった。というか、見つけてよかった本。

感謝のプログラミング

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