新人SEの学習記録

14年度入社SEの学習記録用に始めたブログです。もう新人じゃないかも…

学習記録まとめ(5/24〜6/14)

[java]Javaの学習まとめ(5/24〜6/14)

使用教材

Java魂―プログラミングを極める匠の技

Java魂―プログラミングを極める匠の技

目的

  • Javaのより深い知識の習得
  • 中級者〜上級者を目指す

内容

1章:Javaの復習
2章:ファイナルストーリー
  • final定数の置換タイミング
  • メソッド内定数:メソッド内でしか使わない定数はメソッド内で定義
  • finalパラメータ:引数にfinalを付ける
  • finalコレクション:Collections.unmodifiableSet(map)
  • 条件付きコンパイル:finalクラス内に定数を宣言>if (DevelopmentMode.doLogging) {...}
3章:不変な型
  • 不変な型:全てのフィールドがfinalかつ書き込みメソッドがない
  • オブジェクトのsetter・getterは複製を渡す・複製を返す
    • 参照を通じて変更可能!
  • Stringは不変オブジェクト
4章:コレクション
  • 各コレクションの特徴・選択基準について
    • キーで検索できるvalueが必要>Map
    • 重複が必要>List
    • それ以外>Set
    • オブジェクトのソートが必要>SortedXxx
  • O記法
5章:優れた例外処理コード
  • Exception:恒常的に起こる例外
    • try〜catchかthrowsが必要
    • 常にロジックエラーの結果起きる場合
  • RuntimeException:恒常的に起こらない例外
    • try〜catchなどは不要
    • 常にプログラミングエラーの結果起きる場合
    • ユーザの入力ミス時などはこれを使用して回避可能
  • インスタンス変数の設定は可能な限り最後に持っていく
    • 例外による処理の中断でデータが破損する可能性
6章:ネストクラス
  • 内部クラス
    • 合成をモデル化するのに最もよく利用
  • 限定スコープ内部クラス・無名クラス
  • staticネストクラス
7章:定数のすべて
  • 置換定数
  • ビットフィールド
  • オプション定数
  • 定数オブジェクト
8章:データモデリング
  • データモデルとは
  • 要求仕様書
  • 自然言語モデリング
  • 適切なデータモデルの特徴
  • 再利用可能なデータ制約
    • データ制約クラスを使用して各データが正常値なことを確認
9章:実用的なリフレクション
  • リフレクションの基本
  • グレートリフレクション
  • リフレクションの適用
  • JUnit+リフレクション
10章:プロキシ
  • プロキシとは
  • 静的プロキシ
  • 動的プロキシ

成果

  • Java特有の様々な技法・テクニックについて学んだ
    • 条件つきコンパイル
    • 定数オブジェクト
    • 例外
    • ネストクラス
    • 制約オブジェクト
    • finalパラメータ
    • リフレクション
    • プロキシ
  • より安全・拡張性の高いプログラムの作成方法を学んだ

所感

  • 中々読み応えのある本だったが、それに見合うだけの学習効果はあった
    • 新人研修と合わせて、C言語っぽい書き方からJavaの書き方にシフトできてきた
    • ただし若干内容が古いかも?と思うところはあった
  • 理解できていないところ、理解が浅いところはまだまだあるので、要復習
    • 11章の参照についての話は???だった
    • 途中からはなるべくサンプルコードも自分で一から書くようにした、やはり自分で書くのと読むだけでは理解度が違う

今後の予定

  • 純粋なJavaは一旦終了?
    • 現場で使うかもわからないので。復習用にEffective Java買っても良いかも
    • 色々な言語をある程度知っておくことも必要か? とりあえずC#Python辺り…
  • とりあえず直近はJSPサーブレットをもう少し学ぶ
    • Webアプリケーションについての知識を深める
    • 積んでるRuby on Railsの本もちょい読む