青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

配列から任意の要素を取得する際に配列のindexで指定はしないで条件一致で取得しよう

と、レビューで言われまして。

例えば

const List = ['first', 'second', 'third']
['a','b','c'].map((item, index) => ( <Text>List[index]</Text> )

みたいな。

で、これはなぜか。

理由としては

  • 堅牢性が低い
  • 保守性が低い
  • 静的解析しにくい

だと。

つまるところ、indexで指定する場合は人間が目視で確認するしかないから、ということですね。 配列が変わらない前提、今の状態であれば動くけど、配列を変更した瞬間に意図通りではなくなってしまいます。

そもそも最初も目視で対象の何番目を取りたいかを目視で確認、その後修正されたらまた目視で何番目を取りたいのか確認…となってしまいます。確認が大変、間違えそう、忘れそう。しかもそのような指定をしている箇所全てを見て回る必要がある。

なので、indexで指定するのではなく、findとかで条件を一致しているものをとってくるようにしましょう。条件一致させるとき(array.find(item = item.isShow === trueみたいな)は基本型ついてると思うのでTypsScriptで静的解析されて間違える可能性はかなり低いです。かつ元の配列が修正されて、順番的には手前に要素が追加されてindexなら結果が変わってしまう場面でも条件一致でとってきているなら同じ結果が期待できます。

というわけで品質を考えてその場しのぎで実装しないようにしましょう〜