id:pmoky氏のコードを読んでみた。(part4)
肝の部分というか、2chでネタになっていたあたりのコードを読んでみる。
FileLoader/TextLoader.cs
特に無し
FileLoader/TextFileSearcher.cs
- Initはstatic-initializerでおk
- Stringクラスはimmutableなクラスだから逐一代入するよか、一時無名オブジェクトを使ったほうが効率はいい(GetFileName内)ただし、可読性が落ちると判断されればそこまでしなくても良い。
FileLoader/ResFileSearcher.cs
特に無し。
Grammer/Grammer.cs
- GrammerじゃなくてGrammarが正解。
- SpecialRenketuだけpublicなのはなんだろ(ほかの連結用文字はprivate)
Grammer/LineData.cs
特に無し
Grammer/TextAnalyzer.cs
- 行連結はStringBuilder使ったほうがパフォーマンスが良い
- ArrayListをstaticで持つ必要性がない(ローカル変数でいいじゃん)。
とりあえずここまで。
なんとなく構成がわかってきた。
GrammerがSGでのスクリプト全体の文法を定義して、Reflectionにかかわる部分はReflectExecuterを実装したクラスが定義するってことか。
あとはMacro、Serialize、Executerの詳細を見ればSGの肝の部分はOKってことになるんだろうか。