[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: Javaの開発生産性について




前橋です。

高橋さん:
>JDK1.0.2の頃だと、add("North", titleLabel); なんて書き方
>してましたね。よくスペルミスして"Norht"とやって、コンパイル
>でエラー検知されず、なかなか原因に気付かないことがありました。

そうですよね。文字列だと、コンパイル時にエラーを検出できませ
んよね。

Xtだと、各Widget(AWTでいうところのComponent)の属性を、文字列
で指定するわけですが(これは、リソースファイルなどから実行時
に取得できるようにするため。リフレクションのないCではしょう
がない)、そのための文字列は、全て #define でこんなふうに覆わ
れています。

#define XtNleftBitmap "leftBitmap"

その理由が、「エラーをコンパイル時に検出してもらうため」と知っ
たとき、「おーなるほどー」と思った記憶があります。

BorderLayoutでも、せめて、

↓↓ここから↓↓ここから↓↓ここから↓↓ここから↓↓
    public void addLayoutComponent(String name, Component comp) {
	if ("Center".equals(name)) {
	    center = comp;
	} else if ("North".equals(name)) {
	    north = comp;
	} else if ("South".equals(name)) {
	    south = comp;
	} else if ("East".equals(name)) {
	    east = comp;
	} else if ("West".equals(name)) {
	    west = comp;
	}
    }
↑↑ここまで↑↑ここまで↑↑ここまで↑↑ここまで↑↑

この else if の最後に else をひとつくっつけて、そこで例外を
投げるなり、画面に花火でも打ち上げるなり、轟音をたててクラッ
シュするなりしてくれれば、バグの特定は楽になるでしょうにねえ。

# そういう「防衛的プログラミング」をする人は、はじめから
# 文字列渡したりしないか。

------------------------------------------------------------
  前橋 和弥                             maebashi@xxxxxxxxxx
  中部ソフトエンジニアリング(株)
    〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
    Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------