/ 最近 .rdf 追記 編集 設定 本棚

脳log[20130425]



2013年04月25日 (木) [SakuraEditor]「Sakura Editor / PatchUnicode / #431 PHPヒアドキュメント/C++ RowString/C# quoted String等対応」■もやもやする。CColor_Quoteにすべての文字列タイプを扱うコードが詰め込まれてる(if-elseの嵐)とか、CLayoutColorInfo*が単なる(いやちょっと不自由な) void*に過ぎない(IsEqualは非メンバのオーバーロード関数にできるので考慮に値しない)とか、static_castでなく dynamic_castを使うべきなんじゃないか(その前にキャストが不要な設計を模索すべきなんじゃないか)とか。いずれの点も、もっとコンパイラに仕事をさせようという一言に尽きる。■コードでなくデータ、クラスで駆動されるプログラムは見通しが良く、スケールしやすい。それは実行のルール(コード)がシンプルに維持されることと、データや派生クラス群で表されるバリエーションが個々独立に定義される、定義された時点でプログラムが完成しているという点にあると思う。■この本(4797319127)を読んだときに、そういう風にクラスを定義しますか!と何度か目から鱗が落ちた。最初はなんでそうするの?と思うんだけどぴたっぴたっとピースがはまっていって鮮やかに問題が解決してるんだなあ。使うだけならまだしも設計するのは難しい。■■■「Sakura Editor / Code / Commit [r2900]」■バグるというか、static変数の初期化は一回だけしか行われないという……。代入じゃないもんね?いや、規格は見たことも読んだこともありませんが。■どっちも初期化だと思ってるから間が詰まらず見た目がいい = を使って書いてきたのだけど。= は主に初期化構文の一部として使ってるんだけど。■■■もちょっと具体的に。if-elseの嵐と書いた CColor_Quote::BeginColorだけど、この if-elseを CColor_*のインスタンスを作成するときに前倒しすれば、それ以降の(はるかに多数の)実行がストレートになる。なにもすべてを別々のクラスに独立させる必要はなくて、エスケープ文字が違う、開始・終端文字が違う程度の違いはコンストラクタに与える引数の違いでバリエーションを表現できる。その引数はもちろん処理内容を変えるためのフラグではなくて、直接、文字探索に使うんでよ?(失礼、)■■■ファイル名入力補完「Plugin/投稿/14 - SakuraEditorWiki」プラグインで何ができるのか全然知らないな(知りたくなってきた)。