質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

2回答

706閲覧

オブジェクト指向言語でstaticを使う

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

1グッド

1クリップ

投稿2021/07/23 16:23

編集2021/07/24 00:43

オブジェクト指向言語を用いた開発においてstatic関数だらけになることがあっていいのでしょうか?
ググってもあまり納得できる回答が見つからなかったため、こういった場所で質問させていただくことにしました。
質問する場所が違うようでしたら、お手数ですが、適していると思われる場所(サイト)を教えていただけると幸いです。

「Azure Function を叩くとDBを見に行ってそのデータをもとにリクエストを作って別のAPIを叩く」というものを趣味で作っています。
このDLLを作るにあたって、私は

  • エントリーポイント
  • 以下を流れで行う関数
  • DBを見に行ってデータを取ってくる
  • リクエストを作る
  • APIを叩く

といった具合の分解能にしました。
ですが、リクエストを作る、と言ってもベースのURLとパラメーター用のDictionaryを渡したら、いい感じに結合した文字列を返してくれるものであればいいので、わざわざインスタンス化してフィールドや状態を保持する必要はないと思います。
また、APIを叩く、も、文字列URLを受け取ってそこにリクエストを飛ばすだけで、その文字列に対して他の操作をすることはないので、これも状態を保持する必要がないように思えます。
DBに関しては接続情報などの関係でインスタンス化したほうが管理しやすいかもしれませんが、この場合だと1箇所にしか接続することがなく、接続情報をconstで定義していれば、インスタンス化の意味がない気がします。
staticを使うことが適切であるかは分かりませんが、ただnewせずに使えるという1点において、staticで書けそうな多分をstaticで書いていると全部staticになってしまいました。
staticで書いていてはオブジェクト指向の意味がなくなってしまうとは思うのですが、状態を保持する必要がないものまで、ちゃんとインスタンス化して関数を使ったほうが良いのでしょうか?
それとも、今回のようなUtility用途だらけであれば、staticばかりになってしまってもよいのでしょうか?
趣味で作ってはいますが、業務シーンと同等の作り込みをしたいので、パフォーマンス、メンテナンス性、可読性、他、の観点から指摘頂きたいです。

また、そもそも設計が悪い、という指摘がありましたら、具体的に良くない点と、改善案をお教えいただけると幸いです。

Serbonis👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/23 22:45 編集

こういう場での質問が初めてなので「問題・課題が含まれていない質問」という評価をもらってしまいました。 質問したい部分は、 > 状態を保持する必要がないものまで、ちゃんとインスタンス化して関数を使ったほうが良いのでしょうか? > それとも、今回のようなUtility用途だらけであれば、staticばかりになってしまってもよいのでしょうか? ここです。 自己紹介の部分が雑すぎましたが、漠然とした興味ではなく、業務シーンでもこの様になってしまうため、有識者に見解を求めた次第です。 またそれでも質問する場所が違うようでしたら、他に良さそうな場所(サイト)を教えて下さい。
gentaro

2021/07/23 22:58

ここのガイドラインに沿った真面目な質問をしたいと思っており、かつ、質問文で誤解を受けてると感じてるんであれば、とっとと質問文を修正してください。
Zuishin

2021/07/23 23:39 編集

業務で困っていると感じていて、原因を把握しているなら、直したらいいんじゃないでしょうか。 オブジェクト指向を基礎から教えてほしいという質問ですか? 一言二言で済むようなものではないので、自分でやるしかないと思いますが。
quickquip

2021/07/23 23:37 編集

この低評価はどちらかというと、困っていることが具体的でないからこのままじゃ回答できません、という意味の"回答者側が困っています"というサインです。 具体的なアドバイスが欲しいのなら、具体的なコード、あるいは具体的な「困っていること」を載せるべきです。具体的なコードが提示されれば、"それはstaticばかりでいいんじゃないですか?"と思う **かもしれない** し、"これはこうするといいんじゃないですか?"となる **かもしれない** んですが、今の質問では肝心のそこのところが判断できません。 あと「staticばかりになってしまう」は"困っていること"ではないです、という感じでしょうか。「staticばかりになってしまうことに依って生じている困っていること」が質問に必要かと思います。 それがない限り > 何か困っている理由があり、最適解を見つける為の知見を得たい場合は、その理由や何が知りたいのかを明確に記述してください。 https://teratail.com/help/avoid-asking と言われても仕方がないかと思います。
退会済みユーザー

退会済みユーザー

2021/07/24 00:05 編集

「状態を保持する必要がない」=「static クラス/メソッドが適切」と考えているのでしょうか? とすると、それはなぜですか? その前に質問者さんが言う「状態を保持」ということが具体的にどう言うことなのか教えて下さい。
退会済みユーザー

退会済みユーザー

2021/07/24 00:09 編集

適切であるかどうかの判断は出来ておらず、ただnewせずに使えるという1点において、staticを使っているのが現状です。 状態を保持については、インスタンス化することでそれぞれのフィールドを別個で持っておける性質のことを指しています。これによってフィールドを操作することでオブジェクト指向っぽい書き方になる、という認識です
Zuishin

2021/07/24 01:54

絶対お前初めての質問じゃないだろ。 このやり口は何度も見たぞ。 玉虫色の質問をして、回答がついたら自己解決して退会という迷惑行為を何度繰り返すんだ。
guest

回答2

0

ベストアンサー

staticばかりになってしまうは困っていることではない
とのご指摘で、ここのガイドラインにそった質問ではないことが自覚できたため、クローズさせていただきます。

回答していただいた方、回答を検討して頂いた方、ご迷惑をおかけしました。
また、先程の指摘していただいた方もありがとうございました。

投稿2021/07/24 00:02

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

個人で作られて使われて”エンジョイ”されているのなら宜しいのではないでしょうか。

投稿2021/07/23 18:45

jimbe

総合スコア13209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/23 22:53

自己紹介部分が雑でしたすみません。 業務シーン(java)でも同じような状況になるため困っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問