Object.assign
Object.assign() - JavaScript | MDN
他の人が書いたソースを見てて、何をやっているのか分からなかったから調べた。
やってくれることは、オブジェクトのマージ。
とりあえずサンプル
const object1 = { a: 1, b: 2, c: 3 }; const object2 = Object.assign({c: 4, d: 5}, object1); console.log(object2);
実行結果
> Object { c: 3, d: 5, a: 1, b: 2 }
一番最初の引数に、上書きしていってくれるところ。
いいと思ったことは、Object1がnullだった場合でも、エラーになることなく処理を実行してくれること
const object2 = Object.assign({c: 4, d: 5}, null); console.log(object2); // > Object { c: 4, d: 5 }
一番最初の引数がnullだったらダメだけど、2番目以降は、null許容してくれる。
面倒くさいif文のnullチェックが不要になるのは、可読性も上がるし、いいと感じました。
他人のソース見てると、たまに発見があるから、なるべく見たほうが良い。
特に、自分より上位と思われるエンジニアが書いたソースは、要チェック。
責務分担
mainクラスは、ライブラリを使うだけにする。
機能の実装は、別クラスに追いやり、機能をつなぐだけにしておくと、全体像が見通せて、理解がしやすいはず。
気づかぬうちに、mainクラスになんでも突っ込んでしまうのが、いつものことなので、もうちょっと注意したい。
責務分担の定石って、どこかにまとまっていないものなのだろうか?
npm install
問題になったのは、linux環境でnpm install
したものをwindowsで動作させようとして動かなかったこと。
原因は、もちろん、npm install
を別環境でしたから。
node_modules\.bin
配下にwindows用にコマンドを叩くためのcmdファイルがなかったため、npm start
で使っていたがnpmモジュールが見つからなかったのが原因。
cmdファイルの中身を見たら、node.exe使って何かしようとしていたので、そうなんだろうなと推測。
公式ドキュメント見てないから、本当かどうかは、若干怪しいが。。。
何かの開発環境のときに、同じことしていたのを覚えていたので、気づくのが早かった。
結局、実行する環境でnpm install
するに落ち着いた。
たぶん、別環境でnpm install
したものを持ってくるって人は、そうそう居ないので、ためになるかは微妙かも知れない。