2012-01-01から1年間の記事一覧

DI(Dependency Injection)について

現場で使っていて、 最近新規参画したメンバーに教える機会があったので、 あらためて自分でも整理してみた。ちなみに、自分が経験したことのあるDI方法(注入タイプといったりする)は もっぱらインタフェースによる注入。 インタフェースを実装するクラス…

アプリ作ってます【1】。

アプリを作成しています。個人で。「登山」のアプリです。 「登山者のサポートをする」アプリです。 「登山で困ることを解決する」アプリです。 「登山をもっと楽しくする」アプリです。そのために実現したい機能は ・時刻表の提供 →山というと、さすがに駅…

【EffectiveJava[26]】

<第 4 章 ジェネリックス> 項目26: ジェネリック型を使用する■著書からの要点抜粋 ・ジェネリック型は、クライアントのコードでキャストが必要である型より、 安全で使いやすいです。 ・新たな型を設計するときには、クライアントのコードでキャストが不…

【EffectiveJava[25]】

<第 4 章 ジェネリックス> 項目25: 配列よりリストを選ぶ■著書からの要点抜粋 ・配列は実行時の型安全性を提供しますが、コンパイル時は型安全性は提供しません。 ・ジェネリックスでは、それが逆になっています。■所感 ジェネリックスを使用した型の安全…

今週のお題「オススメの気分転換法」

今週のお題「オススメの気分転換法」個人的におススメなのはランニング。 だいたい週末まで働くとヘロヘロに疲れていて、、、 土曜日は午前中ぐったり(最近はそうなっています。。。)でも、夕方にあえてランニングをすると、 疲れが逆に発散、気分もスッキ…

【EffectiveJava[24]】

<第 4 章 ジェネリックス> 項目24: 無検査警告を取り除く■著書からの要点抜粋 ①取り除くことが可能なすべての無検査警告を取り除いてください。 ②警告を取り除くことができなくて、 警告を起こしているコードが型安全だと明確に示すことができれば、 その…

【EffectiveJava[23]】

<第 4 章 ジェネリックス> 項目23: 新たなコードで原型を使用しない■著書からの要点抜粋 ・原型を使用すると、ジェネリックスの安全性と表現力のすべてを失うことになります。■所感 ジェネリックスの用途自体は理解できているけども、 この章の内容をうま…

【EffectiveJava[22]】

<第 4 章 クラスとインタフェース> 項目22: 非staticのメンバークラスよりstaticのメンバークラスを選ぶ■著書からの要点抜粋 ・エンクロージングインスタンスへアクセスする必要がないメンバークラスを 宣言するのであれば、その宣言にstatic修飾子を常に…

【EffectiveJava[21]】

<第 4 章 クラスとインタフェース> 項目21: 戦略を表現するために関数オブジェクトを使用する■著書からの要点抜粋 ・javaの標準クラスではComparatorが該当する■所感 戦略を定義するインタフェースと戦略を具象化するための具体的クラス。 Comparatorの仕…

父との思い出

今週のお題「父との思い出」ふと思ったので書いてみることに。 父は子供のころ、本当にいろんなところ(でもわりと近場。県外でも隣ww)に 連れて行ってくれた。 でも、そのときのことはあまり覚えておらず。。一番思い出深いのは昨年一緒に富士山に登りに…

【EffectiveJava[20]】

<第 4 章 クラスとインタフェース> 項目20: タグ付クラス(※)よりクラス階層を選ぶ※タグ付クラス は、インスタンスが2つ以上の特性を持っていて、 その特性を示すためのフィールド(タグフィールド)を持つクラス■著書からの要点抜粋 ・タグ付クラスは…

【EffectiveJava[19]】

<第 4 章 クラスとインタフェース> 項目19: 型を定義するためだけにインタフェースを使用する。■著書からの要点抜粋 ・定数インタフェースパターンは、インタフェースの下手な使い方です。 ・定数ユーティリティクラスはインスタンス化を防ぐべき。 ・イ…

【EffectiveJava[18]】

<第 4 章 クラスとインタフェース> 項目18: 抽象クラスよりインタフェースを選ぶ■著書からの要点抜粋 ・既存のクラスを、新たなインタフェースを実装するように変更することは容易にできます。 ・インタフェースは、階層を持たない型フレームワークを構築…

【EffectiveJava[17]】

<第 4 章 クラスとインタフェース> 項目17: 継承のために設計および文書化する、でなければ継承を禁止する ■著書からの要点抜粋 ・クラスはオーバーライド可能なメソッドの自己利用(self-use)を文書化しなければなりません。 ・クラスは、賢く選択され…

【EffectiveJava[16]】

<第 4 章 クラスとインタフェース> 項目16: 継承よりコンポジションを選ぶ ■著書からの要点抜粋 ・メソッド呼び出しと異なり、継承はカプセル化を破ります。 ・既存のクラスが新たなクラスの構成要素になるので、この設計はコンポジションと呼ばれます。■…

【EffectiveJava[15]】

<第 4 章 クラスとインタフェース> 項目15: 可変性を最小限にする ■著書からの要点抜粋 ・クラスを不変にするための5つの規則 ※不変クラスはインスタンスが変更できないという単なるクラスのこと オブジェクトの状態を変更するためのいかなるメソッドも提…

【EffectiveJava[14]】

<第 4 章 クラスとインタフェース> 項目14: publicのクラスでは、publicのフィールドではなく、アクセッサ―メソッドを使う ■著書からの要点抜粋 ・クラスがそのパッケージの外からアクセス可能ならば、 アクセッサ―メソッドを提供してください。 ・クラス…

【EffectiveJava[13]】

<第 3 章 すべてのオブジェクトに共通のメソッド> 項目13: クラスとメンバーへのアクセス可能性を最小限にする ■著書からの要点抜粋 ・役割に矛盾しないように最も低いアクセスレベルを選ぶ ・インスタンスフィールドは、決してpublicにすべきではありま…

【EffectiveJava[12]】

<第 3 章 すべてのオブジェクトに共通のメソッド> 項目12: Comparable の実装を検討する ■著書からの要点抜粋 ・Comparableを実装することで、 インスタンスが自然な順序を持っていることをクラスは示しています。 ・compareToの一般契約とequalsの一般契…

【EffectiveJava[11]】

<第 3 章 すべてのオブジェクトに共通のメソッド> 項目11:clone を注意してオーバーライドする■著書からの要点抜粋 ・finalではないクラスでcloneメソッドをオーバーライドするならば、 super.cloneにより得られたオブジェクトを返すべきです。 ・実際に…

【EffectiveJava[10]】

<第 3 章 すべてのオブジェクトに共通のメソッド> 項目10:toString を常にオーバーライドする■著書からの要点抜粋 ・優れたtoString実装を提供することで、そのクラスがかなり使いやすくなります。 ・実用的な場合には、 toStringメソッドはオブジェクト…

【EffectiveJava[9]】

<第 3 章 すべてのオブジェクトに共通のメソッド> 項目9:equals をオーバーライドする時は、常に hashCode をオーバーライドする■著書からの要点抜粋 ・equalsをオーバーライドしているすべてのクラスで、 hashCodeをオーバーライドしなければなりまあせ…

【EffectiveJava[8]】

<第 3 章 すべてのオブジェクトに共通のメソッド> 項目8:equals をオーバーライドする時は一般契約に従う■著書からの要点抜粋 ①以下のどれかにあてはまるのであれば、オーバーライドはしない。 ・クラスの個々のインスタンスは、本質的に一意である。 ・…

【EffectiveJava[7]】

<第 2 章 オブジェクトの生成と消滅> 項目7:ファイナライザを避ける ■著書からの要点抜粋 ・ファイナライザは、予測不可能で、たいていは危険であり、一般には必要ありません。 ・時間的に制約のあることをファイナライザで行うべきではない ・ファイナラ…

【EffectiveJava[6]】

<第 2 章 オブジェクトの生成と消滅> 項目6:廃れたオブジェクト参照を取り除く■著書からの要点抜粋 ・オブジェクト参照にnullを設定することは、普通というよりむしろ例外であるべきです。 ・クラスが独自のメモリを管理しているときには、 プログラマは…

【EffectiveJava[5]】

<第 2 章 オブジェクトの生成と消滅> 項目5:不必要なオブジェクトの生成を避ける ■著書からの要点抜粋 ・staticファクトリーメソッドを使用することで、 たいていは不必要なオブジェクトの生成を回避できます。 ・static初期化子 ・ボクシングされた基本…

【EffectiveJava[4]】

<第 2 章 オブジェクトの生成と消滅> 項目4:private のコンストラクタでインスタンス化不可能を強制する■著書からの要点抜粋 ・クラスを抽象化することでインスタンス化できないことを強制しようとしても上手くいかない。 ・クラスは1つの明示的なprivate…

【EffectiveJava[3]】

<第 2 章 オブジェクトの生成と消滅> 項目3:private のコンストラクタか enum 型でシングルトン特性を強制する ■著書からの要点抜粋 シングルトンを生成するときの3つのパターン 1.public finalのフィールドによるシングルトン →AccesibleObject.setAcc…

【EffectiveJava[2]】

<第 2 章 オブジェクトの生成と消滅> 項目2: 数多くのコンストラクタパラメータに直面した時にはビルダーを検討する■著書からの要点抜粋 インスタンスを生成するときの3つのパターン 1.テレスコーピングコンストラクタ・パターン →機能はするが、多くの…

【EffecitiveJava】

タイトルの通り。 せっかく読んだので「読んだ」、「理解した」で終わらせるのではなく、 「使える」、「説明できる」レベルを目指して書いていこうかと。 副産物として文章作成能力の向上も期待しつつ^^<第 2 章 オブジェクトの生成と消滅> 項目1:コン…