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ってことになるんだろうか。