どこぞの会社のウンコなコーディング規約
「コレクションクラスを使う場合には初期容量を指定しなければならない」 orz
そういう「研究されたデフォルト値」を無視して、規約でコードのウンコ化を進めるとは何事か
// 書いてはいけない書き方 Vector<String> s = new Vectorr<String>(); // 正しい書き方 Vector<String> t = new Vectorr<String>(200);
別に規約で初期容量を指定しろ、っていうのは構わないと思うが何でそれをソースコードに埋め込んだのか理解に苦しむ
コーディング規約のドキュメント作れば済む話やん… orz
推測だけど、投稿者のコードはソースに埋めてあったんじゃなく、規約ドキュメントから抜粋したのではないかと。
「研究されたデフォルト値」なんて考えのPGがいるような現場でなら極めて正当性の高いコーディング規約だと思います。
あら、解説がいりそうね...
実際問題「よほど特殊な使い方でなければ一般アプリでは十分実用的な値」にデフォルトはなっているわけで。
もし、そうでない使い方をしたいなら、サブクラスを導出して「ビッグデータクラスw」を明示するか、万一やるにしても特段の定義済み定数にて初期子を記述すべきです。
こんな規約は「スーパー馬鹿プログラマを単なる馬鹿プログラマに持ち上げる」効果はあっても、「普通のプログラマ」に「可読性とメンテナンス性の低下」を強制するだけのものと考えます。
メモリを効率よく使うことが必ずしも最適解ではないしね。ご家庭の非力なマシンで動くアプリケーションを開発するのならまだしも、企業が使う高スペックマシンの上で動くようなプログラムを開発するんなら、せっかくの「研究されたデフォルト容量」を邪険にするようなコーディング規約を推し進めるのは確かにいかがなものかと思います。
この規約、やるならやるでCheckStyleとかで自動チェックしたい。
貴方が書いたあらゆるコードに対して、「研究されたデフォルト値」は常に最適解を与えてくれる、とか思い込んでいませんかね。 考えすぎかもしれないけど、そこだけちょっと心配。
初期値を与えないコレクション型が、ちょっとした弾みでどれだけ非効率なメモリの食い方をするかは常日頃から意識しておきたいところ。 まぁ、「常に初期値を与えよ」ってのも確かに極論過ぎの感はありますがね。。