タグ

ブックマーク / yujisoftware.hatenablog.com (4)

  • 「null」をフラグとして使うのは、やめた方がいい - 地平線に行く

    null をフラグとして使うのは、やめた方がいいと思います。 null は、ただ変数が初期化されていないことを表しているだけです。 この意味以外で、null を使わない方がいいと思います。 null をフラグとして使う 「null をフラグとして使う」というのは、「null なら xxxx」というように、null が何らかの意味を持って使われていることを指します。 例えば、下記のコードでは「null はゲストユーザを指すフラグ」として使われています。 /** * ユーザ用のヘッダを作る処理 */ public String createHeader(User user){ (…中略…) String name; if(user != null){ name = user.getName(); }else{ name = "Guest"; // null ならゲストユーザ } 問題点 これの

    「null」をフラグとして使うのは、やめた方がいい - 地平線に行く
  • Java7 で String クラスがリファクタリングされていました - 地平線に行く

    先日、ついに JavaSE 7 がリリースされました! そこで、早速ダウンロードして、Java7 のソースコード(src.zip)を Java6と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち String クラスについて調べてみました。 splitメソッド - 独自処理による高速化 いままでは、String#split(〜) は正規表現 (Patternクラス) に処理を移譲するだけでした。 // (Java6) Stringクラス、2291行目〜 public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); } それが、単純な区切り文字なら正規表現を使わないで独自に処理をす

    Java7 で String クラスがリファクタリングされていました - 地平線に行く
    suginoy
    suginoy 2011/08/03
    勉強になるとはこのこと
  • 攻撃的プログラミングには、例外ブレークポイントが便利 - 地平線に行く

    柴田 芳樹さん*1のブログを読んでいて、ふと目にとまったコメントがありました。 結果として、APIの実装コードでは不正パラメータの検査されていない。あるいは、検査はしているが例外をスローすることなく、単純にリターンしている。※ (中略) ※ 検査はしているが単純にリターンしていると、その不正と思われる値が当に不正なのか、正常値の範囲の一つなのかが不明瞭となります。 コメント: 全例外をキャッチして、適当な別の例外にラップしてスローしたり、キャッチはするけど何の処理もしないで戻り値を返す人も時々いますね。FileNotFoundException をキャッチして-1を帰したりとか。 FileNotFoundExceptionをそのままスローしてくれればファイル名やパスが間違っている可能性に即座に思いあたるのに、-1や別の例外を帰されると、そのエラーが何であるかを追跡するだけで丸一日を浪費さ

    攻撃的プログラミングには、例外ブレークポイントが便利 - 地平線に行く
  • バッファリングしない方が速いときもある - 地平線に行く

    前に書いたソースを見直していたら、こんなものがありました。 (指定のデータをクライアントに流すだけのサーブレットです) OutputStream out = new BufferedOutputStream(response.getOutputStream()); InputStream in = new BufferedInputStream(new ByteArrayInputStream(data)); byte[] buf = new byte[BUF_SIZE]; while(in.read(buf) != -1){ out.write(buf); } out.flush(); 改めて見直してみると、無駄が・・・。 二重にバッファリングをしている BufferedOutputStream を使っているのに、読み込み部分でもバッファリングをしています。 これだと、入力→配列に書き込

    バッファリングしない方が速いときもある - 地平線に行く
    suginoy
    suginoy 2011/01/31
  • 1