2008-09-17から1日間の記事一覧

スーパークラスのフィールドへのアクセス

読書会で、抽象クラスのフィールドはデフォルトで protectedにする privateにしてprotectedなgetter/setter*1を用意する のどちらがいいか、という話があった。 昔は後者を好んで使用していたけど、最近はとりあえず前者を使うことが多い。なんたって手軽だ…

Javaでusingブロックもどき(JavaSE7)

Javaのファイナライザ微妙だよな−、という話から発展して、JavaSE7のクロージャでC#のusingブロックのようなものが実現できるようになるかも、という話をしたので、それもついでに補足。 ここで紹介するサンプルは、Closures (Lambda Expressions) for the J…

正しいファイナライザの記述方法

ついでにJavaでの正しいファイナライザの記述方法を紹介しておく*1。 スーパークラスのファイナライザも呼び出す必要がある。 @Override protected void finalize() throws Thowable { try { // ファイナライザの中身 } finally { super.finalize(); } } fin…

ファイナライザ、デストラクタ

読書会で話題に上がったけど、この辺の用語は言語によってまちまちで、かなり紛らわしい。 その場ではファイナライザとデストラクタは別物だよ、と言っただけなんで、補足を。 まずは、言語ごとに何を持っているのかの表を。 言語 ファイナライザ デストラク…

Pimplイディオム

C++

読書会で「C++は循環参照の記述が困難なところが・・・」という話題があったけど、その場はPimplイディオムという言葉のみを紹介しておいた。 ということで補足を。 まず、問題となるコードはこんな感じ。 // hoge.h #pragma once #include "piyo.h" class h…

RAII

C++

詳しい文脈は忘れてしまったけど、読書会で「C++はデストラクタが弱い」的な話題があがった。 その場はRAII*1使えばいいよ、とだけ言って概要のみ説明しただけだったので補足を。 まずは、RAIIの実例を知ってもらう為に、簡単なサンプルの紹介から。 void wr…

postfix/suffix

そしてn。 snprintf なんてのもあるのでアレですが、locale や re-entrant の目印が _l とか _r という postfix になっていたりで統一感がありませんね。 ってまあ途中に潜り込ませるやり方がそうそうできるわけでもない。と。 あと、postfix が複数ついたり…