インスタンス状態に依存しないクラスのメソッドがstatic
とマークされることがあります。私は、「このメソッドはインスタンスの状態に依存しない」ということを宣伝するという点ではかなり明確になっています。矛盾した状態の可能性を検討する際に、そのメソッドを完全にスキップするのは簡単です。インスタンス状態を読み書きしないマーキングメソッド
しかし、静的メソッドをマーキングする際の問題は、静的メソッドを継承または上書きできないことです。このような
何かがここで議論されていますDoes it make sense to have a non static method which does not use an instance variable?
は、それは非静的メソッドは、状態に依存しないことを宣言するための注釈を持っている意味をなすだろうか?コンパイラは、それが他の状態に依存しないメソッドのみを使用していることを検証できます。
パイプラインにこのような機能はありますか?
確かにそうです。そのため、C++には* const *があります。たぶんあなたは誰かがJavaコミュニティプロセスの要求に入れているかどうかを確認したいと思うかもしれません。そうでなければ;それを始める;-) ...しかし、真剣に - 静的*の他のビューは:OO内の異常です。あなたが言及した問題に加えて、スタティックコールはまた、より緊密な結合につながります。テストするのが難しいコードです。つまり、可能な限り避けてください。 – GhostCat
@GhostCatこれはC++ constとは異なりますが、これは基本的にはオーバーライド可能/仮想静的メソッドを提案しています。 – hyde
@hydeはい...メソッドに2つのパラメータを渡して1つの戻り値を取得すると、(1)メソッドがこのクラスの2つの入力のみを使用していて、(2)何らかの形で状態を突然変異させる。 – Teddy