道具の選定
プログラムで何かを実現する時、その方法は1通りではありません。 でも、最終的な実装は1つになると思います。
例えば、JavaScriptで「重複の無い集合を求めたい」とします。 そのためには、少なくとも次の2つの方法が考えられます。
- ES2015から導入されたSetを使う
- 配列として要素を保持して、lodashのuniqメソッドを使う
自分は、「わざわざSetが新しく導入されたんだし、必ずSetを使うべき理由があって、それを使うべきなのでは?」と思いました。
でも今日、逆に「Setを使わないポリシーを持っている」旨の意見を聞いて、かなり衝撃を受けました。 JavaScriptのSetが持つ機能の利便性と、Set導入によるコーディングスタイルの乱れを天秤に掛けた結果だと思います。
これについては納得で、確かにドキュメントを見るとSetの機能は少なく感じるし、同じことを実現しているのにその方法が乱立していると保守しにくいというのも理解できました。
なるほどなぁと思いつつ、道具の選定の判断基準は上に挙げた2つだけでなく、プロダクトの特徴によっても変わるかもしれないので、 視点が変われば「Setを使うべき」という結果になるかもしれないとも思っています。
まず実現したいことと特徴を考えて、そのためにはどこまで機能があれば足りるのか、最も大事な要素は何なのかをしっかり考えていけるようになりたいですね。