1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Effective Java 2章

Posted at

2章.オブジェクトの生成、削除

1.コンストラクタの代わりにstaticなファクトリメソッドの作成を考慮すべし

2.コンストラクタの引数が膨大になるときはbuilderを使うべし

  • telescoping constructor と JavaBeansパターンなるものと対比させている。
  • インスタンス生成において、パラメータが片手で数えられるよりも多くなるような場合にはbuilderパターンでのインスタンス生成を考えたほうが良い。
  • JavaBeansパターンとするときの欠点の説明がよく分からなかった。複数回の呼び出しがあるから不整合が起きうる、みたいな話だが具体的にどういうこと?

3.シングルトンなクラス設計をするにおいては、コンストラクタをprivateにするか、ENUMを用いる手法とせよ

  • ENUM型使ったシングルトンみたことないが。。

4.インスタンス化を抑制したいクラスには、privateコンストラクタを作成せよ

  • utilityクラス等はインスタンス生成を抑制したいので、その時に使う模様。

5.リソースのハードコーディングを行うより、Dependency Injectionを行うべし

  • 大きな規模になった場合には、フレームワークのDIの仕組みを使うべき。
  • Factoryパターンを使う。
  • この項目は第2版にはなかったよう。

6.不必要なオブジェクト生成は避けるべし

  • defensive copyが必要な場合はその限りでない。defensive copyってなんだ?

7.使わなくなった参照は廃棄すべし

  • 廃棄しないとメモリリークが起きる。
  • キャッシュやコールバックを持つクラスで起こりがちな問題らしい。
  • 弱参照?→以下が分かりやすい。弱参照は他からの参照(弱参照以外の参照)がなくなると、GCの対象となる。
    http://www.ne.jp/asahi/hishidama/home/tech/java/weak.html

8.finalizerとcleanerの使用は避けるべし

  • これらの短所は、どのように動くかの予想がつきにくいことにある。
  • finalizerはパフォーマンスに深刻な悪影響を与える。
  • finalizerの使用はセキュリティに悪影響を与える。以下に詳しく乗っていたが、正直よくわからん。。
    https://www.ibm.com/developerworks/jp/java/library/j-fv/index.html
  • これらの使用の代わりに、AutoClosableの実装とtry-with-resourcesを用いていく。

9.try-finallyよりもtry-with-resourcesを使うべし

  • try-finallyでtry句とfinally句で同時に例外発生した場合、try句のほうがかき消されてしまう。
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?