RSS The Daily WTF

CodeSOD: データベース読み取りに不可欠

Javaはオブジェクト型とプリミティブ型の区別を設けているため、初心者にとって混乱を招く。ArrayListのようなコレクション型はオブジェクト型を必要とするが、プリミティブ型を直接保持することはできない。Javaはプリミティブ型を自動的にそのオブジェクト型に対応する箱に詰め込み、使用を簡単化している。このコードはこの機能の誤解を示しており、不要に整数を箱詰めと箱開けを行っている。このコードはデータベースからデータを取得し、IntegerオブジェクトのArrayListを生成している。代わりにそのままArrayListを使用するのではなく、int配列を作成し、Integer値をその中にコピーしている。この不要な変換は、プリミティブ配列を好む傾向にあると考えられる。また、ResultSetを反復処理してそのサイズを決定する必要があるため、中間リストが必要となる。int配列を使用することは、早期の最適化や開発者の好みの反映であると考えられる。著者はこのコードがCに慣れ親しんでいる開発者によって書かれたと推測している。このコードは、Javaの自動箱詰めを活用してArrayListを直接使用することで簡略化することができる。このアプローチでは、手動での箱詰め、箱開け、および不要なint配列の作成を避けることができる。
favicon
thedailywtf.com
CodeSOD: Integral to a Database Read