[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: staticの使い方(メソッド)




横から失礼します。

>> 実は dも参照していたり、a や bを破壊していたり、cに何の影響
>> も与えていなかったりしていない、ということを、コード上で保証
>> してくれていない、という心地悪さがあるのです。

もし破壊しているなら、何らかの方法で通知すべきだと思います。

その前に、暗黙に破壊してしまうという設計がいけないわけですが。

>そのクラスが責任を持つという責任範囲が明確になっていれば、
>気にならないと思います。

この場合のクラスの責務として以下のようなものがあると思います。

クラス内部の状態が変化しているなら、
 ・外部に通知する
 ・状態変化を外部から知る手段が用意されている

最初の発言にあった、
public な変数やメソッドを static として宣言しろという意見は
かなり無理があると思います。

Java の static は C の static とは意味がまったく違うからです。

たとえばインスタンスの個数を管理しているクラスがある場合、
インスタンスの個数とかを保持しておく変数を static 変数に
することが考えられます。

クラス全体の責務となるようなメソッドは static メソッド
(わたしはクラスメソッドと読んだ方がしっくりします)として
定義します。たとえば上の例なら、個数を取得するメソッドとか。
あるいは、すべてのインスタンスに作用するようなメソッドとかです。
-- 
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)