1. ホーム
  2. language-agnostic

[解決済み] 静的メソッドを多用することは悪いことですか?

2022-08-27 02:57:24

質問

私は、クラスが内部状態を追跡する必要がない場合、クラス内のすべてのメソッドをstaticとして宣言する傾向があります。たとえば、私がAをBに変換する必要があり、変化する可能性があるいくつかの内部状態Cに依存しない場合、私は静的な変換を作成します。内部状態Cを調整できるようにしたい場合は、Cを設定するコンストラクタを追加し、静的変換を使用しません。

私は、静的メソッドを使いすぎないようにというさまざまな推奨事項 (StackOverflow を含む) を読みましたが、上記の経験則の何が間違っているのかまだ理解していません。

これは合理的なアプローチなのでしょうか、それともそうではないのでしょうか?

どのように解決するのですか?

一般的な静的メソッドには2種類あります。

  • safe" 静的メソッドは、同じ入力に対して常に同じ出力を出します。このメソッドはグローバルを変更せず、どのクラスの静的メソッドも呼び出しません。本質的に、あなたは限られた種類の関数型プログラミングを使っているのです。
  • 安全でない静的メソッドは、グローバルな状態を変更したり、グローバルなオブジェクトへのプロキシ、または他のテスト不可能な動作を行います。これらは手続き型プログラミングへの回帰であり、可能であればリファクタリングされるべきです。

しかし、きれいな名前で呼ばれていても、それは単にグローバル変数を変更しているに過ぎないことに注意してください。アンセーフスタティックを使用する前に、慎重に考えてください。