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

[jfriends-ml 10554] アンチパターン



  高橋(智)です。

  先日「サーバーサイドJavaアンチパターン」を買って読み終わったの
ですが、最初は「読書会向きかも??」と思ったものの、技術的な解説が
少ないので、推薦はしないことにしました。(^^;

  ただ、コーディング規則に関する章は面白いなぁと思いまいした。特に
以下の箇所です。
  著者の好みは、2、1、3、4 の順ですが、
  私自身の好みは、4、1、3、2 の順かなぁ。(2,4がまるっきり逆だ...)

--- 引用 --------------
■ハンガリアン記法とスコープ
    ...
  ハンガリアン記法は、完全なクラス属性と共通の自動変数とを明確に
区別したいときには有効`かも'しれません。
    ...
  [よくあるバグパターン]
     public class SomeClass {
       protected int value;
       public int getValue() {
         return value;
       }
       public void setValue(int value) {
         this.value = value;
       }
       public void readValueFromDatabase() {
         int value = 0;
         value = getFromTable(...); // どちらの「value」が使われるだろうか?
       }
     }

  上のような例では、自動変数とローカル変数を混同しやすく、このような場合に
よく使われる4つの規則が役に立ちます。

  1、属性を扱うときは、先頭または末尾にアンダースコア(_)を使います。
        例; protected int _value;
  2、すべての属性に this を付けます。
        例; this.value = getFromTable(...);
  3、メンバー属性のアクセスをアクセッサ経由だけに制限します。
        例; setValue(getFromTable(...));
  4、名前の重複を禁止します。ただし人為ミスはあり得ます。
        例; int tmpvalue = 0;

  私自身の好みは、2、1、3、4 の順ですが、どれを採用してもよいでしょう。
    ...
    ...
--- 引用 --------------

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