オブジェクト指向言語を用いた開発においてstatic関数だらけになることがあっていいのでしょうか?
ググってもあまり納得できる回答が見つからなかったため、こういった場所で質問させていただくことにしました。
質問する場所が違うようでしたら、お手数ですが、適していると思われる場所(サイト)を教えていただけると幸いです。
「Azure Function を叩くとDBを見に行ってそのデータをもとにリクエストを作って別のAPIを叩く」というものを趣味で作っています。
このDLLを作るにあたって、私は
- エントリーポイント
- 以下を流れで行う関数
- DBを見に行ってデータを取ってくる
- リクエストを作る
- APIを叩く
といった具合の分解能にしました。
ですが、リクエストを作る、と言ってもベースのURLとパラメーター用のDictionaryを渡したら、いい感じに結合した文字列を返してくれるものであればいいので、わざわざインスタンス化してフィールドや状態を保持する必要はないと思います。
また、APIを叩く、も、文字列URLを受け取ってそこにリクエストを飛ばすだけで、その文字列に対して他の操作をすることはないので、これも状態を保持する必要がないように思えます。
DBに関しては接続情報などの関係でインスタンス化したほうが管理しやすいかもしれませんが、この場合だと1箇所にしか接続することがなく、接続情報をconstで定義していれば、インスタンス化の意味がない気がします。
staticを使うことが適切であるかは分かりませんが、ただnewせずに使えるという1点において、staticで書けそうな多分をstaticで書いていると全部staticになってしまいました。
staticで書いていてはオブジェクト指向の意味がなくなってしまうとは思うのですが、状態を保持する必要がないものまで、ちゃんとインスタンス化して関数を使ったほうが良いのでしょうか?
それとも、今回のようなUtility用途だらけであれば、staticばかりになってしまってもよいのでしょうか?
趣味で作ってはいますが、業務シーンと同等の作り込みをしたいので、パフォーマンス、メンテナンス性、可読性、他、の観点から指摘頂きたいです。
また、そもそも設計が悪い、という指摘がありましたら、具体的に良くない点と、改善案をお教えいただけると幸いです。
回答2件
あなたの回答
tips
プレビュー