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

[jfriends] Re: getterの命名について



アステル関西まっTelサービス(着信専用サービス、月額基本料金¥0)申込受付中
通話ができるので、彼女や、塾通いお子さんにもう1台!http://www2.gulf.or.jp/ 
---------------------------------------------------------------------------

いなみです。

On Thu, 07 Oct 1999 00:51:39 +0900
「[jfriends] Re: getterの命名について」にて
Atsuyuki Nishizawa <anishi@xxxxxxxxxx> wrote:

> やはり、よく使う比較条件などは、毎回値を取り出してnullと比較するよりも、
> isNull()のメソッドを用意しておけば if文などで何を評価しているか
> メソッド名からわかるので可読性が大幅アップです。

# null に特化して変なことを聞いてしまいますが(^^;
取り出した値が null かチェックする場合を考えた場合、何か変な
気がしますが気のせいでしょうか。

   if (obj.getFoo() == null) { ...
は、意味的には
   Foo foo = obj.getFoo();
   if (foo == null) {  ....
ですが、isNullメソッドを作った場合でもし fooが null の場合は
   if (foo.isNull()) { ... 
は isNull() が staticメソッドでなければ NullPointerException
になってしまうのでなかなか悲しいものが有ります。

staticメソッドにすれば解決、と言うわけにも行かないですよね。

class Foo {
   public static boolean isNull(Foo foo) {
      retuen foo==null;
   }
}
にして、foo.isNull(foo); と言うのもかなりマヌケですし…(^^;
何とかなるものでしょうか。

と言うか、西沢さんの考えたのは Foo ではなく obj の方のメソッ
ドとして、
class Obj {
   Foo foo;

   public Foo getFoo() {
      retuen foo;
   }
   public boolean fooIsNull() {
      return foo==null;
   }
}
とか、各プロパティ毎に xxxIsNull()を作るような感じでしょうか。
isNull(String propertyName) とか付けて、プロパティ名で
リフレクション使って……とか?(^^;

そこまでするなら、最初の
   if (obj.getFoo() == null) { ...
で妥協してしまうのがスジなのか……(笑)

---
> でも、なぜBooleanクラスにisTrue()とかisFalse()とかのメソッドがないの?と
> 思ってしまいます。。。
> 
> #booleanValue()ってダサダサ(^^;)

ラッパークラスの宿命……と思ったら、Charcter は is〜なメソッ
ドがたくさんあるな(^^; と、思ったけど static メソッドなので
関係ないや。

[プリミティブの型名]+Value() と言うメソッドしか無い、と言う
のはやはり宿命かもしれません。

---
井浪@xxxxxxxxxx