gsminek gsminek 2012-09-01 02:29:31

[Java] フルHD推奨。 このエントリーをはてなブックマークに追加

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

画面の左側がわりと無駄な気がします。

public int hoge(){
    int result = 0;

    try {
        if ( proc1() == 0 ){
            // 正常処理
            try {
                if ( proc2() == 0 ){
                    // 正常処理
                    try {
                        if ( proc3() == 0 ){
                            // 正常処理
                            try {
                                if ( proc4() == 0 ){
                                    // 正常処理
                                    try {
                                        if ( proc5() == 0 ){
                                            // 正常処理
                                            if ( proc6() == 0 ){
                                                // 正常処理
                                                // まだまだ続くよ!
                                            } else {
                                                // 異常処理
                                            }
                                        } else {
                                            // 異常処理
                                        }
                                    } catch(Exception e) {
                                        // 例外処理
                                    }
                                } else {
                                    // 異常処理
                                }
                            } catch(Exception e) {
                                // 例外処理
                            }
                        } else {
                            // 異常処理
                        }
                    } catch(Exception e) {
                        // 例外処理
                    }
                } else {
                    // 異常処理
                }
            } catch(Exception e) {
                // 例外処理
            }
        } else {
            // 異常処理
        }

    } catch(Exception e) {
    // 握りつぶす
    }

    return result;
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(17)

#1 m_shige1979 m_shige1979 2012-09-01 03:39:28  

なんという無駄なネスト・・・

#2 niuind niuind 2012-09-01 04:22:42  

もはや芸術の領域

#3 hallnicks hallnicks 2012-09-01 05:09:46  

せめて関数に分けてくださいよ(笑)

"// 握りつぶす"はちょっと渋いかも

#4 InternalServerE InternalServerE 2012-09-01 06:18:25  

真面目に読み解いてないけど、各「例外処理」で同じことをしてるのであれば、

  • try - catchを、メソッドの冒頭と末尾を囲うよう1個に括り出す。
  • 「procXX == 0なら次へ」の構造を「procXX != 0 なら異常処理して終わり」にし、if 文の入れ子を平坦化。

の方針だけでも、割とスッキリ整理できそうな。
それが根本的解決か、という視点で見ると、別の解がありそうだけれど。。

#5 daydream_model3 daydream_model3 2012-09-01 22:26:47  

稀によくある
http://jeanne.wankuma.com/tips/csharp/programming/releasecom.html

#6 mnzktw mnzktw 2012-09-01 23:10:35  

↑ 私もそれを思い出したw

#7 math_neko math_neko 2012-09-01 23:13:32  

これはリフォームの匠の登場が待たれる

#8 InternalServerE InternalServerE 2012-09-02 06:33:54  

↑↑↑初めて見た。こりゃ大胆。普通はtry - finally 一個に纏めるよなぁ。。

#10 ikumimashiba ikumimashiba 2012-09-04 12:02:56  

↑↑↑↑俺もそのサンプル思い出した。 そのサンプルは内容を理解するのによいサンプルだと思う。 ネストが深いのは共通だけど、こっちはfinallyでもなくcatchだからなぁ・・・

#11 Temarin_PITA Temarin_PITA 2012-09-16 21:02:11  

ifの条件逆にして早期returnしてやれば良いんじゃ・・・

#13 m_akihiro m_akihiro 2012-09-24 15:54:23  

投げられる例外の型増やしてそこでcatchスコープ大量の方が良かったかも.

そもそもprocXの引数チェックしてるのならばそこで例外処理してしまえばいいのに……

#14 migimatsu migimatsu 2012-12-17 16:58:05  

if () { } else if () { ... } else { }

な定石による処理の構造化をご存じないだけでしょう...

#15 rcsv_pg rcsv_pg 2013-01-12 20:20:58  

「握りつぶす」がいい

#16 tacticsrealize tacticsrealize 2013-04-14 19:26:59  

エクストリーム・インデント増やし

#17 HighSpecOjisan HighSpecOjisan 2017-09-01 11:37:28  

なんだこのネスト!?(驚愕)

コメント投稿には、twitter認証が必要です。

Twitter認証

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

[その他] HOW TO ABC..

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

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »

[Java] is禁止令

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

ウンコードの趣旨とは違い、レビューで指摘...

// Mod yamada Start

// 一般的に考えて真偽値を返すメ...

鑑賞する »

[Java] 連番

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

もはや人間が読むものではない。

...

package com.renban.erq053.czp008;

/**...

鑑賞する »