自分も似たような経験あります。型の安全性を重視して、ジェネリック型の制約をきっちり定義したコードを書いたことあるんですけど、後々呼び出し側がすごく複雑になってしまった。具体的には、extends句で上限型を厳しく指定しすぎて、いざ使う側になると「あ、これ入らないのか」ってなることが多くて。
そのときは、制約を緩和する方向で改善したんですが、やっぱり最初から「どこまで厳しくするか」を呼び出し側の気持ちになって考えるべきだったと思う。型安全性って確かに大事なんだけど、実装の柔軟性とのバランスが難しいですよね。
特に実感したのが、後から「あ、このケースも対応させたい」って話が出たときに、型の制約が壁になっちゃう。結果的に制約を全部外し直すハメになったりして、それなら最初からもう少し緩くしておけばよかったのに…みたいな。
今は「必要な安全性は守りつつ、でも使う人のストレスを減らす」くらいの塩梅で考えるようにしてます。完璧な型定義より、実用性も大事だなって学びました。
著作権は著者に帰属します
いいね 4・コメント 1・保存 0
この観点から問いを立てる
コメント 1件