会社でおもしろい話が出ていたので紹介。



Javaエンジニアチェックリスト
・共通処理だからとりあえず継承しなきゃ。と思っている。

・String a = "this is [" + b + "].";
 が、実際にどういったコードとして実行されるかわからない

・String a = new String("abcdefg");
 と
 String a = "abcdefg";
 は全く同じ意味だと思っている

・a = null;
 とかして、とりあえずnullを代入すれば、迅速に解放されると思っている
 (上位スコープに対するものを除く)

・JDK1.5以降なのに StringBuffer を使っている

ArrayList,Vectorの違いがわからない

・HashMap,Hashtableの違いがわからない

ArrayList list = new ArrayList();
 とか書いている

・HashMap map = new HashMap();
 とか書いている

・Listの内部配列がどのように拡張されていくか知らない

・synchronizedが何のために出てくるかわからない

・ThreadとRunnableの違いがわからない

・intとIntegerの違いがわからない

・インターフェイスと親クラスって
 2つもあって、使い分けめんどくせ。と思っている。

・インターフェイス作ると2個もファイルができて
 わかりにくくなる。と思っている。

・プリミティブ型と参照型がメモリー上でどう扱われているか、わからない

・catch (Exception ex) をしてとりあえず例外を回避している

・equals()とhashCode()が、ListやMapの中でどのような目的で
 使用されているか知らない。

・とにかく共通メソッドはstaticにすれば良いと思っている

・public static final String がコンパイル時に、参照側に
 どう組み込まれるかわからない。

・log.debug("test value: " + b);
 これがパフォーマンス的に問題がないと思っている

・Genericsが定義されたクラスを作れない

・Autoboxing/Unboxingを聞いたことがない、使ったことがない

フレームワークを使うと、いちいちフレームワークの使い方を
 伝授しないとだめなので、他者への引継ぎが面倒くさくなると思っている

・short,int,longのバイナリが何バイト消費するか知らない

Javaって準備とか決まりとか、いろいろめんどくさいよね。と思っている

・チェックリストに該当する項目があったけど、
 まぁ今のところプログラムするのに特に支障はないし、いいか。
 と思っている