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

[jfriends-ml 10090] Re: Java 言語で学 ぶデザインパターン入門第 6 回議事録



  高橋(智)です。 

Wataru Fukushima wrote:
snip 
> > P370
> >   CommandListNodeクラスのtoString()メソッドの中で「"" + list」という記述を行っ
> >   ている
> >     --> あまりお薦めできない。
> >     --> 結城さんパターンである
> 
> Object.toString()を使うよりも、String.valueOf()を使うのが好みです。
> toString()って、何だがデバッグコードっぽいし、Javaコアクラスの中には、
> バージョンによって出力形式が変わるものが(確か)ありましたし。
snip
> 関係ないですが、StringBufferのインスタンスからStringのインスタンスを得る
> 時は、私は、
> 
>   new String(instanceOfStringBuffer)
> 
> のように書きます。

  私は MySQL用のJDBCドライバを実装しているのですが、そこで
java.sql.PreparedStatement を実装する際に、上の2点について
ともに背いています。(^^;

  ?パラメータを実際のSQLデータに置き換える際に、以下の用ように
しています。
---------------------------------------------------
    StringBuffer sql = new StringBuffer(1024);
    Object[] param_obj_array = new Object[3];
     ...
    param_obj_array[0] = ...; // パラメータオブジェクトを保存
    param_obj_array[1] = ...; // パラメータオブジェクトを保存
    param_obj_array[2] = ...; // パラメータオブジェクトを保存
     ...
    Object obj = param_obj_array[0]; // ?パラメータを展開
    sql = sql.append(obj.toString());
     ...
     ...
    return sql.toString(); // 完成したSQL文を返す!!
---------------------------------------------------

  Object[]に格納したり、Object.toString()を呼んでいるのは PreparedStatemenに
    public void setObject(int parameterIndex, Object x,
              int targetSqlType, int scale) throws java.sql.SQLException;
というメソッドがあることを考慮してのことですが...

  new String(StringBuffer buff); については、以前JavaWorld誌で同じことが
書かれていたのを読んだときに、修正しようと思ったままほったらかしにしている
のが原因です。(^^;


> > ◆さいごに
> >   次回に読書会の課題図書は既に投票が始まっています。
> >   5月の中旬をメドに締め切りたいと思います。
> 
> 今見たら僅差ですが1位はリファクタリングになってますね。
> 社内の勉強会では、最初と最後の章を抜かして、約2週間に1回2時間、輪講形式
> (各自3トピックくらいを担当しレジメにまとめて発表)でやって9ヶ月(16回)で
> 終わりました。

  この本ですが、最近なかなか売っていないです。(^^;
  紀伊国屋の店頭在庫の部数も"僅少"のようです。
  (※ https://bookweb.kinokuniya.co.jp/hb/ )
  まだ持っていないかた、念のため早めに買っておいたほうが良いかもしれません。
  (※まだ決まった訳ではないです)

-- 
高橋智宏
  Java読書会( http://www.t3-jpn.com/bof/ )
  T3-Japan( http://www.t3-jpn.com/ )