Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Effective Java 輪読会 項目53-56

1 120 vues

Publié le

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

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

×