リファクタ

Javaのfor-each文でremoveする

Javaの for-each 文 (拡張for文) 内で remove をする方法はありません。 Sunの解説でもこの点は明記されています。 for-each ループは好きなときに使えます。使用すればコードがわかりやすくなりますが、どこででも使用できるわけではありません。たとえば、…

攻撃的プログラミングには、例外ブレークポイントが便利

柴田 芳樹さん*1のブログを読んでいて、ふと目にとまったコメントがありました。 結果として、APIの実装コードでは不正パラメータの検査されていない。あるいは、検査はしているが例外をスローすることなく、単純にリターンしている。※ (中略) ※ 検査はし…

爆発物処理班

先々週、サーバ停止という致命的な事態をやってしまいました。 原因は、PostgreSQLの LOCK TABLE と SELECT によるデッドロック。 自分でそのことを記事にしたのに、完全に見落としました orz (単純にこの記事通りだったらポスグレがデッドロックを検出する…

現在時刻を取得する方法

現在時刻のミリ秒を取得するのに、こういうやり方を何度か見ました・・・。 Date date = new Date(); long now = date.getTime(); Calendar calendar = new GregorianCalendar(); long now = calendar.getTimeInMillis(); 日付の取得なら Date や Calendar …

文字を * に置換する(for文なしで)

他の人のソースを見ていたら、こんなのがありました。 String str = ""; for(int i = 0; i < input.length(); i++){ str += '*'; } 入力された文字を * に置き換える処理です。 でも、よく考えたらこれ、for文いらないですよね・・・。 char[] buf = new cha…

下限値を設定したい

こんなソースがありました。 public class Sample{ private int rate; public Sample(int rate){ this.rate = rate; if(rate < 1000){ this.rate = 1000; } } } rateが1000以下なら1000、そうじゃなければrateで初期化。 そうすることによって、this.rate >=…