[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: [jfriends] Re: staticの使い方(メソッド)
>そりゃクラスが大き過ぎるよ、と言われるならば、その通りかも知
>れません。
Thread を使う場合以外で、
こういった副作用が気になるケースというのはわたしはあまり考えられないです。
わたしは一度に一つのことしかできないので、
あまり複雑なアクセスはやらないです。
># でも、鳥頭なので、少なくともX上のMuleで1画面に収まらないプ
># ログラム間で相互に副作用があると、私の理解の範囲を超えます。
他の部分に影響がある、共通要素へのアクセスは1個所に制限すべきです。
>たとえば、sin() やcos() は、文句の付けようもない関数ですよね。
>
>で、それが、Javaでは、Mathクラスのメソッドとして実現されてい
>るわけですが、これはやっぱりstaticです。
それは Math が特殊なユーティリティークラスだからです。
Math のような責務を負ったクラスは例外中の例外です。
>よって、それを「関数」だと見倣すのは、自然なことであるように、
>私には思えます。
Math のような特殊なユーティリティークラスは例外として、
通常の計算手順は属性と結びついています。
発想を転換して、オブジェクトの気持ちになってみてはいかがでしょうか。
自分が何を知っている必要があって、どんなメッセージにどう答えなければ
ならないかが分かるのでは。
>calcSalary()は、給料を返すだけかと思っていたら、データメンバ
>のsalaryも上書きしてた、とか...
# ドキュメントにちゃんと書くとか。javadoc は便利。
>まあ、ここまでアホなメソッドは作らないと思いますが、インスタ
>ンスメソッドからは、そのクラスのインスタンス変数は「まる見え」
>なので、グローバル変数と同様の危険がないかなあ、ということです。
外部には隠蔽しておいて、
クラスの中ではグローバル変数みたいに使うのが王道だと思います。
--
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)