BT

グーグル シングルトン発見器を発表

| 作者: Geoffrey Wiseman フォローする 0 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2007年8月29日. 推定読書時間: 2 分 |

グーグルはバイトコード内におけるシングルトン上での発見と報告をするためのバイトコード分析をするツールを発表した。シングルトンは一般的なソフトウェアパターンであるがそれに対してたくさんの人が慎重物議をかもしており、意見は両論となっている。プロジェクト用wikiには下記のように述べられている。

シングルトンの問題は誰もがいつでもアクセス可能にしつつグローバルステートをプログラムに引き合わせていることだ。更に良くないことにシングルトンは今日一番酷使されているデザインパターンの一つであり、必要性さえもない実例においてたくさんの人がこの有害なグローバルステートを取り入れる可能性があることを意味しているのだ。

グローバルステートを使用しているプログラムをテストするのはとても困難なことなのだ。
一つのクラスがシングルトンを使用すると(スタティックなgetInstanceメソッドを使って自身の単一性を強要するクラシックなシングルトンに関して話しています。)シングルトンユーザーとシングルトンは大変強力に結びつくのだ。
この静的インスタンスに依存するということはメソッドのシグネチャがもはやその依存性を提示していないということを意味している。なぜならそのメソッドは何もない状態からシングルトンを引き出すことができるからだ。
シングルトンに依存するとメソッドの依存性が明確にならないので、テスターは知らぬうちにシェアードリソースを修正することによって実は互いに依存しあっている二つのテストを作ってしまうかもしれない。

グーグルシングルトン発見器は自身の単一性(シングルトン)や、もう一つのクラス(ヘルパーシングルトン、またはヒングルトン)の単一性を強調するコードやパラメータ(メソッドシングルトン、またはミングルトン)なしでスタティックメソッドからステートを変換したり、またパブリックスタティックフィールド(フィールドシングルトン、またはフィングルトン)を持ち合わせているコード、また同様に上記で述べた中の一つに直接的に依存しているコードを発見することができるのだ。
もし興味がなかったら何個か隠しても良いだろう。

だがしかしこのツールはまだ初期段階にあるのでいくつかの制限がある。

  • 最初に抽出を行わないと複数のJARファイルからバイトコードを読むことができない。
  • グラフの結果を閲覧するのに外部ツールが必要となる。
  • 全ての種類のシングルトン、特にインナークラスとして重ねあわされたシングルトン、またはファイナルフィールド内のシングルトンを発見することはできない。

今後のコードアナリシスアーティファクト、ツール、そしてグーグルに関する情報に関してはInfoQを見てほしい。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT