[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互助会ホームページ)