適切な抽象度の道具を使って意図を明示する
コードを読む際には、意図を読み取っていかないといけない
逆に、コードを書く際には、意図を伝えていかないといけない
複数の書き方ができる場合に、闇雲に抽象度の高い道具を使っては意図が曖昧になる
JSの例だと
foreach使えば大抵のloopは書けるが、mapで済む時はmapを使いましょう
letを使えばどの種類の変数も定義できるが、定数なのであればconstを使いましょう
コード上にforeachが現れていると、
mapやfilterでできること以上のことをやっているんだな、と普通は読むmrsekut.icon
変数定義にletが使われていると、
どこかで再代入があるんだな、と普通は読むmrsekut.icon
選択肢が複数ある中で、わざわざ能力の高いものを使っているということは、それ相応の理由があるはず、と普通は読むmrsekut.icon
letを使っていた場所を修正した結果、定数で済むようになったのであればconstに書き直すべき
他の例
SQLで重複を弾く際の、DISTINCTとGROUP BY
TypeScriptの型の、'hoge'|'piyo'とstring
HTTP Request MethodのPOSTとPUT
etc.
常に制限強めに書くのが良いわけでもない
例えばHaskellにおけるパラメトリック多相した関数の定義時など
f :: Int -> Int -> Intではなく、
制限を緩めて、というかより汎用的に使えるようにするために、f :: a -> a -> aのように書くことが好まれる
常にそうしろと言っているわけではないmrsekut.icon