GUI 部分のプログラミングの話
お仕事先で、Java で GUI 作るためのコードを整備しようとしてフレームワークを作ったそうな。
Panel のコーディング規約として
- 子コンポーネントは全てフィールドにせよ
- initComponent にて全てのコンポーネントの生成コードを書け
- initLayout にて全てのコンポーネントの配置コードを書け
- initAction にて全てのコンポーネントのイベント登録コードを書け
- initUpdate にて全てのコンポーネントの内容設定コードを書け
みたいな感じ…。あほくさ、とか思いつつ、少しでも機械的にしたいんだろうと同情したり。
これだと、特定のコンポーネントの処理をすべて記述したかが解りにくいので、後でコンポーネントを追加する時とかめんどくさそうだけどねぇ。
initUpdate はコンテキスト依存な値も設定するように書くということなんだけど、コンテキスト依存なレイアウト変更もあるだろうから(たとえば visibility とか)、結局コード位置は完全に奇麗にはならないのよね。
やっぱりどっちかというと関連するコンポーネントのグループごとにクラスにして、さらにその内部でも各コンポーネント毎に設定処理をまとめて書いたほうがいくらかマシと思うんだけど、そうすると最終形は平坦なはずのレイアウトが階層構造になっちゃって位置の微調整が面倒になったりするのよね。LayoutManager 使わない場合の話だけど。
ふぅ…より良い方法はいくらでも思いつくけど、対象としているコーダのレベルを考えるとやっぱ妥協に妥協を重ねているのか…やはり同情…。