/note/tech

OOPとかDIとかクリーンとかに感化されるとstaticは悪ですべてインスタンスが善だと思ってしまう罠は...

OOPとかDIとかクリーンとかに感化されるとstaticは悪ですべてインスタンスが善だと思ってしまう罠はあるなと思った。状態も多態性もない安定かつ抽象な関数の場合は、キメキメ静的リンクのほうが優れている。min/maxとかregexpとか、ユーザー定義のその種のもの。依存管理がそもそも不用で、実動作だし

@tanakahisateru

単体テストしたとき本当の動作を含んでテストできるのはメリット。モックからモックにバトンパスしてるだけみたいなテストに比べて

@tanakahisateru

まあそういうのはほとんど言語の標準ライブラリがカバーしてるから、ユーザー定義の余地が見つけられるかどうかはあるなあ。ドメインモデルとして再安定なところに置くべき、参照透過に定義可能なビジネスルール概念を見出せるかどうか

@tanakahisateru

本当に普遍で唯一かの判断も難しい。少しでも普遍でないことがわかると、同じことやるのに、再安定のところにあったstaticが、インターフェースだけ残し、まったく逆の不安定なところに移動してインスタンス化で動く実装になる。言語文法は最上級の抽象なのにフレームワークは再下級の具象みたいな

@tanakahisateru

自分も覚えがある >staticは悪ですべてインスタンスが善だと思ってしまう罠

そういう設計の勘所って案外言語化されていないのと、staticおじさんみたいなキャッチーな話題のお蔭でstaticはイケてないイメージが付いてしまった結果、staticクラスの導入に及び腰になってしまうところはあった。