エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

2018/10/01に覚えたこと Object.assign/責務分担/npm install

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したものを持ってくるって人は、そうそう居ないので、ためになるかは微妙かも知れない。