[解決済み] 静的メソッドを多用することは悪いことですか?
2022-08-27 02:57:24
質問
私は、クラスが内部状態を追跡する必要がない場合、クラス内のすべてのメソッドをstaticとして宣言する傾向があります。たとえば、私がAをBに変換する必要があり、変化する可能性があるいくつかの内部状態Cに依存しない場合、私は静的な変換を作成します。内部状態Cを調整できるようにしたい場合は、Cを設定するコンストラクタを追加し、静的変換を使用しません。
私は、静的メソッドを使いすぎないようにというさまざまな推奨事項 (StackOverflow を含む) を読みましたが、上記の経験則の何が間違っているのかまだ理解していません。
これは合理的なアプローチなのでしょうか、それともそうではないのでしょうか?
どのように解決するのですか?
一般的な静的メソッドには2種類あります。
- safe" 静的メソッドは、同じ入力に対して常に同じ出力を出します。このメソッドはグローバルを変更せず、どのクラスの静的メソッドも呼び出しません。本質的に、あなたは限られた種類の関数型プログラミングを使っているのです。
- 安全でない静的メソッドは、グローバルな状態を変更したり、グローバルなオブジェクトへのプロキシ、または他のテスト不可能な動作を行います。これらは手続き型プログラミングへの回帰であり、可能であればリファクタリングされるべきです。
しかし、きれいな名前で呼ばれていても、それは単にグローバル変数を変更しているに過ぎないことに注意してください。アンセーフスタティックを使用する前に、慎重に考えてください。
関連
-
[解決済み] Mac OS X で DYLD_LIBRARY_PATH を使ってもいいのでしょうか?また、それを使った動的ライブラリ検索アルゴリズムはどうなっていますか?
-
[解決済み] Pythonの静的メソッド?
-
[解決済み] べき乗演算とは何ですか?
-
[解決済み] 静的メソッドを使用する場合
-
[解決済み] なぜJavaでは静的メソッドを抽象化できないのですか?
-
[解決済み] なぜJavaは静的メソッドのオーバーライドを認めないのですか?
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み] 式と文の比較
-
[解決済み] Javaで静的メソッドからgetClass()を呼び出す方法は?
-
[解決済み】ループや関数をサポートする言語で「goto」の正当な使用例はあるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 素人考えですが、Javaの'static'の意味は何ですか?重複
-
[解決済み] グリーンフィールド・アプリケーションとブラウンフィールド・アプリケーションとは?
-
[解決済み] ディープコピーとシャローコピーの違いは何ですか?
-
[解決済み】Debug.Assert()はいつ使うべきですか?)
-
[解決済み] イーガーローディングとは何ですか?
-
[解決済み] さまざまなアプローチやコンセプトを理解するために学ぶべき重要な言語とは?[クローズド]
-
[解決済み] プログラミングにおける "Context "という言葉?[クローズド]
-
[解決済み] ボクシングとアンボクシング、そのトレードオフとは?
-
[解決済み] リンクリストはどのような場合に有効か?
-
[解決済み] OOPってなんだろう?