Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Effective Java 輪読会 項目53-56

1,105 views

Published on

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Effective Java 輪読会 項目53-56

  1. 1. Effective Java 輪読会 2014/02/26 開発部 田中
  2. 2. 項目53 リフレクションよりインターフェースを選ぶ
  3. 3. リフレクションのデメリット • コンパイル時の型検査を活用できない • 冗長 • パフォーマンスが悪い
  4. 4. 想定される使いどころ • クラスブラウザー • オブジェクトインスペクター • コード解析ツール • インタプリタ的組み込みシステム
  5. 5. クラス名からインスタンスを生成する Class<?> cl = null; try { cl = Class.forName(args[0]); } ... Set<String> s = null; try { s = (Set<String>) cl.newInstance(); } ...
  6. 6. 問題点 • 実行時例外 • 冗長 • 未検査警告 o cl.newInstance()の結果の要素がStringであることを 確認できない o newInstance()の戻り値型はSet<?>..?
  7. 7. リフレクションは多くの短所を持つ • 他に上手く実装する方法を考える • リフレクションを活かせるパターンを把握 しておく(たい) • JDBC • FieldConstraint
  8. 8. 項目54 ネイティブメソッドを注意して使用する
  9. 9. 本当に必要か? • パフォーマンス改善のためのネイティブメ ソッドは今となっては必要ない
  10. 10. 項目55 注意して最適化する
  11. 11. 速いプログラムよりも良いプログラム • パフォーマンス < 設計 • パフォーマンスを制限しないAPIを意識する o ex. 防御的コピーが必要なメソッド • モジュール化していれば、最適化も容易 • 安易にパフォーマンスを改善しようとして も、実際に改善されるか分からない o パフォーマンス測定を必ず実施
  12. 12. 項目56 一般的に受け入れられている命名規約を守る
  13. 13. 活字的命名規約 • パッケージ • クラス • インターフェース • メソッド • フィールド • 型変数
  14. 14. 文法的命名規約 • メソッド o is o has o get
  15. 15. DataSpider では.. http://wiki/index.php?%B3%AB%C8%AF%C9 %F4%2F%A5%B3%A1%BC%A5%C7%A5% A3%A5%F3%A5%B0%B5%AC%CC%F3#y0 07df06

×