The King's Museum

ソフトウェアエンジニアのブログ。

2015-09-01から1ヶ月間の記事一覧

【Effective Java】項目19:型を定義するためだけにインタフェースを利用する

インタフェースは、その実装クラスのインスタンスで何ができるかだけを述べるべきである。 その他の目的、たとえば定数インタフェースなどには利用しない。 定数インタフェース メソッドを持たず、static final の定数を外部に提供しているだけのインタフェ…

【Effective Java】項目18:抽象クラスよりインタフェースを選ぶ

Java では抽象クラスよりも、インタフェースを利用するべき。 抽象クラスとインタフェース 抽象クラスとインタフェースには以下の違いがある。 抽象クラスはメソッドの実装を含むことが許されるが、インタフェースは許されない 抽象クラスを実装するためには…

ファイナライザの脆弱性

項目7でファイナライザの挙動を調べてて、以下の記事を見つけた。 IBM developerWorks ヒント: ファイナライザーによる脆弱性からコードを保護する どうやら Java のファイナライザには脆弱性があるらしい。 ファイナライザの脆弱性 項目7で書いたように、…

【Effective Java】項目17:継承のための設計および文書化する、でなければ継承を禁止する

継承させることを意図するクラスを作成するときは、継承のために設計し、文書化する。 そうでない場合には継承させないようにする。 自己利用(self-use)の文書化 クラスはオーバーライド可能なメソッドの自己利用を文書化する必要がある。 個々の public …

【Effective Java】項目16:継承よりコンポジションを選ぶ

継承よりもコンポジションを選ぶべきである。 継承の利用 継承はコードを再利用するための一般的な手法だが、常に最適なものとは限らない。 継承を安全に利用することができるのは以下の場合である。 スーパークラスもサブクラスも特定のパッケージ配下にあ…

【Effective Java】項目15:可変性を最小限にする

クラスの可変性は最小限にするべきである。 不変クラス 不変クラスとは、そのインスタンスを変更できないという性質をもつクラス。 インスタンスが生成された時点ですべての情報を持っていて、インスタンスの生存期間中はそれらの情報が変化しないことが保証…

【Effective Java】項目14:public のクラスでは、public のフィールドではなく、アクセッサーメソッドを使う

クラスがパッケージの外からアクセス可能ならば(public ならば)、ゲッターとセッターを提供するべき。 public なクラスがデータフィールドを公開すると、その内部的な表現を永久に変更できなくなる。 一方、クラスがパッケージプライベート・private のネ…

【Effective Java】項目13:クラスとメンバーへのアクセス可能性を最小限にする

ここから第4章「クラスとインターフェス」。 クラスとインタフェースは Java の中心に位置し、抽象化の基本となる要素。 この章では、クラス・インタフェースが利用可能で、頑強で、柔軟になるような指針を議論する。 最初の項目は情報隠蔽・カプセル化に関…

Gauche 始めました。

Scheme というか、Gauche を勉強し始めた。 プログラミングGauche作者: Kahuaプロジェクト,川合史朗出版社/メーカー: オライリージャパン発売日: 2008/03/14メディア: 大型本購入: 22人 クリック: 713回この商品を含むブログ (272件) を見る ちょっとしたタ…

【Effective Java】項目12:Comparable の実装を検討する

Comparable インタフェースの compareTo を実装するとインスタンスが順序を持つようになる。 第3章で議論した他のメソッドとは異なり、compareTo メソッドは Object では宣言されていない。 ただし、Comparable を実装すると、多くの一般的なアルゴリズムや…

(c) The King's Museum