UJMLサンプル109:UIEngineカプセル化とファイルサイズ(2006/05/05)
既存アプリのリファクタリングを進めていたら、コンパイル後のバイナリファイルサイズがずいぶん増えていた。どうやら、コンポーネント化とカプセル化を進める中で増えたらしい。
今回、特定の処理をコンポーネント化し内部変数を外部から隠蔽するために Setter と Getter メソッドを用意したが、どうもそれが積もりに積もってファイルサイズを増やしてしまったようだ。
試みに、簡単なサンプルを作り、コンパイル後のファイルサイズを比べてみた。一つ目が55バイトで二つ目が75バイトだった。コンポーネント側の差はそんなになかったとしても、呼び出し側が変数→関数に置き換わることの影響が大きいのかもしれない。詳しく調べた方がいいのだろうが次回に持ち越しということで。今回の教訓は、ファイルサイズが増えると困ることもあるので気をつけよう、といったところか。
---main.ujml(Setter/Getter無し)
<ujml>
<application>
<state-machines>
<state-machine name="Hoge">
<variables>
<var name="mHuga" type="int" visibility="public"/>
</variables>
</state-machine>
</state-machines>
<script>
Hoge.mHuga = 12345;
</script>
</application>
</ujml>
---
---main2.ujml
<ujml>
<application>
<state-machines>
<state-machine name="Hoge">
<variables>
<var name="mHuga" type="int"/>
</variables>
<functions>
<function name="setHuga" type="void" visibility="public">
<parameters><var name="val" type="int"/></parameters>
<script>mHuga=val;</script>
</function>
<function name="getHuga" type="int" visibility="public">
<return><eval>mHuga</eval></return>
</function>
</functions>
</state-machine>
</state-machines>
<script>
Hoge.setHuga(12345);
</script>
</application>
</ujml>
---
コメント