高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

ソースの分割

 AILight - C#の研究、調査してます!!の掲示板にてちょこっと言われまして、ソースコードの行数を減らすことを考えてみています。フォームのコードは、一部をユーザーコントロールに仕分けるなど。
C#ではGUI部品も、全部InitializeComponentで初期化しているだけで、ソースファイルに存在します*1、よって、GUI部品をたくさん置くと、ソースコードが肥大化してしまいます。これは、コードが長くなるほど遅くなる、SharpDevelopでは致命的です。
どちらにしても、密接に関わりがあるわけではない複数のGUI部品のイベントコードが、一つのファイルに集まってしまうことはあんまり好ましいことではないでしょう(C#のように、regionで区分けできるのならばまだ良いですが)。グループボックスやフレーム単位で、ユーザーコントロールなどに仕分けたほうがいい…んだと思います。

 さて…、それでソースコードの行数はある程度減らせても、どうしようもないのがメニューとツールバーです。これらは別のフォームに移動させるなんてコトは出来ません。メニューなど、他のコントロールやメソッドを呼び出すだけとはいえ、項目数(とイベントハンドラの数)が一番多くなりがちです。
これらを分割できれば…。エディタがそういう分割に対応していれば楽なんですが、それはSharpDevelopも、VisualStudio.NETも対応していなかったはず。小規模なアプリケーションでは良いですが、大規模なものになるにつれて難しいことになりそうですねえ。
やっぱりその辺を鑑みて、なるべく簡単な開発が出来る環境が欲しい?*2

*1:ほとんどの言語においては当たり前ですが…、DelphiVBでは、フォーム作成用のコードは、ソースコードとは別に管理されていました

*2:SharpDevelopはどうやら中身が結構分割されているようなので(一つ一つのポップアップパネル、一つ一つのおまけ機能ダイアログ など、すべてアドインとして追加できるようになってるようです)、がんばれば可能なのかも知れませんが。