/
最近
.rdf
追記
編集
設定
本棚
翌日へ
前日へ
脳log
[20120929]
2012年09月29日 (土)
[SakuraEditor]「
SourceForge.net: Sakura Editor: Detail: 3570267 - Singletonインスタンス取得関数名変更
」 コンパイルエラーをくらったから愚痴るわけなんだけど、こんなのは Instanceにする理由も getInstanceにする理由も考え出せると思う。getをつけたのは Web上の Javaコード(とその翻訳)をベースにしたのだと思うがパッチに理由は付いていない。Instanceと大文字で始めるのは C++ではそれが普通だから、GetInstanceにしないのはこれが staticメンバで Getがどこに対するメッセージなのか不明瞭だから。C++に Classオブジェクトは存在しない。そもそもセッタゲッタはクラスを構造体と混同させる原因で悪。また、たまたま(静的)メンバ関数の形をとっているけれど主眼は手続きではなく、制約は付くだろうがグローバル変数やマクロで代替することもできるものであり、ではこの名前が何を指すことになるのかといえば Hogeクラスの(唯一の)Instanceなのだから Hoge::Instance()がまこと適切な名前だったように思う。コーディングスタイル由来とはいえ大文字で始まるのも固有性を示唆していて良い。百歩譲ってどちらでもいい(それでも C++なら getInstanceより GetInstanceだろう。プロジェクトにも TInstanceHolderのメンバとして GetInstanceがすでにある)としても、ならば変えないというのが一番有力な選択になろう。ましてやこれはアプリケーションコードの中でも基礎を作る部分なのだから、変えられないという認識があってもよかった。
翌日へ
前日へ