Headline About TechLog Download Java VBA Link

June 28, 2007.

Globalization系の話


日本語に対応したSafariだが、以前にもましてよくクラッシュするようになったような。セキュリティ問題も頻出している。「Macは(Unixは)セキュリティが強い」的印象があるが、クラッカに人気が無いだけなのは自明であろう。しかし、未だにバッファオーバフローに悩んでいるのだからこの業界も意外と進歩が無い。手前味噌に好きなJavaを褒めるわけではないが、オーバフローを意識しないですむ開発って楽。メモリアドレスの直管理はそろそろ積極的に避けて行きたい。C#とかも勉強したいなぁ。

 

EclipseのVisual Editorプラグインを少しずつ評価中。イベントリスナ周りの自動生成方針が少し気に入らない以外はおおむね好印象。ただ、重い。軽量が売りのEclipseの良さを削ぎ取ってしまうぐらい重い。まぁ、モバイルノートで開発するなという事か。後はWXGA (1388 x 768)の画面ではいささか手狭だ。やはりWUXGAの液晶がほしいところ。こないだまで三菱のMDT241WG信者だったのだが、IOの新製品も魅力的なスペックと価格。2万円でMPを取るかどうか。MP以外はIOの方がよさげですが。どっちにせよお金(略)。貯金が思い通り溜まって余剰があれば買ってもいいかな。競い合って安くなれ。無論、機能を犠牲にせずに。

 

閑話休題。java.awt.eventのActionListenerクラスとActionEventクラスの設計には昔から疑問があります。JButtonやButtonを作ってActionListener#actionPerformed()でイベント処理を実装する場合、ボタンごとに無名クラス実装を書くか(baristaはこの書き方は嫌い)、ActionEvent#getActionCommand()でコマンド文字列(デフォルトはボタンのキャプション文字列)を実行して、取得した文字列でif文を書く事になる。

ところが、[保存]というボタンが2つあったり、文字が書いてなくてアイコンのみのボタンがあったりするわけで、そのままではコマンド文字列が一意である保証が無い。で、Button#setActionCommand()で明示的にボタンにコマンドを割り当てる事となる(国際化を睨むなら、ボタンの表示文字列はそもそもリソース化されるので、それをif文の条件に使うのは危険だし)。ここに即値を書くのはダサいから、ActionListenerをextendしたMyListenerを作って、MyListener.SAVEとかMyListener.SAVE_ASとかを定義する。で、MyFrameを使うコントローラはMyListenerをimplementしろよ、と設計する。

で、実際にactionPerformed()を処理するときに、このコマンドが文字列であるため、if - else if - else ....と書かなきゃならない。barsita的には多数の分岐はswitch caseで書きたいのです。コマンド文字列を"1", "2"とかにして、parseIntして使う手も無くはないけど、ちっともスマートじゃないし。ポリモフィズムで解決するのはやりすぎだし、ボタンもリスナも継承クラスにしてintで処理できるイベントモデルを自作するのも馬鹿だし。コマンド文字列を列挙型定義する??うーん、Tiger前提だしなんだかなぁ...。皆さんはどんな実装にしてます?素直にif文かけ?if文が長くなるほどでかい画面を作らず、分割すればよいような気もしますが...。

 

 

全然関係の無い話ですが、BBCを読んでて、33ヶ国語に対応!と謳ってあって、対応表を見たら、日本語は入ってませんでした。英語が読めるだろうと褒められているのか、文化レベルが低いからBBCは読まないだろうとなめられているのか、yahooが強すぎるから商売にならないと思われているのか。いずれにせよ随分軽視されているようですね....。

http://www.bbc.co.uk/worldservice/languages/


名前: 意見: パス:

※パスにはこの日記のタイトルをコピペして下さい。


June, 2007
SUN MON TUS WED TUR FRI SAT
12
3456789
10111213141516
17181920212223
24252627282930