読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

splitの動きと設計する場所

javascriptの文字列のsplitは、空文字列に使うと、状況によって空の配列空文字列1つを含んだ配列を返す。

"".split();
// ['']

"".split("");
// []

"".split(",");
// ['']

parseInt("");
// NaN

"4,5,5,3"みたいなデータをsplitしてそれぞれparseIntして使ってたんだけど、これのせいでNaNを扱う羽目になりしばらくはまってしまった。

ここまではJavaScriptの話。

この形式のデータが同じモジュール内に2箇所あるのだけど、どこにどう関数を追加するのが一番使いやすい設計になるんだろう?

  1. 空の文字列が入ってきた場合は、空の配列を返すsplitのラッパー
  2. そのラッパーを使い、中身をparseIntして返す関数

この2つに分ければいいことはわかるんだけど、それらをどこに置くのがいいのだろうか?もしくはどの時点でどう判断するのが良いのだろう?

  1. そのモジュールの内部
  2. そのアプリケーション用のユーティリティモジュール
  3. ユーティリティ集みたいなものを作って独立させる

2, 3はあまり良くないという話も読んだ気がする。設計について考えるとき、明確で素早いフィードバックが無いのが辛い。

それと、prototypeに追加するのは散々まずいと言われているみたいだけど、メソッドチェーンの『見た目が』好きなので、本当は"3,4,5".mysplit(",").parseIntAll();みたいに書きたい。自分一人しか触らないからいいかな…

広告を非表示にする