CoolDriverJPN 2012-08-16 00:11:26

[Java] 「変数って初期化しておくもんだろ」っていうC言er がいたんですよ。なにぃ〜?や(略 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

C言語から入ったひとによる Java あるある。
変数スコープは狭くしてくれと言っても、「動けば良いじゃん!」と言い張るC言ger。
小さなゴミコードが集まって、そしてバグが引き起こされる・・・・・・。

最終的なバグは、MyExceptionB のときに、ログ出力が出ないこと。
※ 変数名、メソッド名、例外クラス名などは、差し障りのない名称にしています。

void method() {
  int executeResult = 0;
  String message = "";

  try {
    // ...
    executeResult = execute();
    // ...

  } catch (MyExceptionA eA) {
    message = exceptionFormatter(eA);
    commonLogger.writeLog(message);

  } catch (MyExceptionB eB) {
    exceptionFormatter(eB);
    commonLogger.writeLog(message);

  }
}

コメント(6)

#2 InternalServerE 2012-08-14 14:56:17  

最終的なバグは、MyExceptionB のときに、ログ出力が出ないこと。

という結論に至る経緯が良くわからんのですが。 voidメソッド内に変数executeResult があるのも違和感ありあり過ぎるし、コード例が悪過ぎませんかね。

#3 sindoguest1 2012-08-15 06:53:03  

C言語だと { ... } の間は1つのスコープになるんで割と便利。制御構造をまたがない限りはどこでも置けます。変数宣言は必ず関数の最初って人には向きませんが。

#4 migimatsu 2012-08-15 06:56:35  

わざわざ message なんて介するから...

#6 math_neko 2012-08-16 01:20:02  

なまじ独自のエラーメッセージを出そうとしてうっかり八兵衛しちゃいましたねw


このウンコードに臭った人は、こちらのウンコードにも臭ってます

[JavaScript] とっても長いswitch/case文

このエントリーをはてなブックマークに追加

配列変数を全く理解できていなかった。

var rnd = Math.floor(Math.random() * 128...

鑑賞する »

[Java] 内部的にunicodeだから日本語つかえ...

このエントリーをはてなブックマークに追加

これを書いた先輩に「英語で書きましょうよ...

class 会員 {
    private int 会員番号;
    p...

鑑賞する »

[Java] 長すぎるor短すぎる関数名

このエントリーをはてなブックマークに追加

Javadocでやれ

public static User findByFirstNameFamily...

鑑賞する »