1. 程式人生 > >do{}while(false)妙用

do{}while(false)妙用

  • 神技do{}while(false)

do{}while(false)或者說do{}while(0),本人在linux原始碼中學得,起初看起來比較奇怪,但在處理連續流程中特別有用,例如ABC三個流程,A執行後判斷條件如果為true再執行B,如果未false直接結束流程,B執行完後同樣判斷條件如果為true再執行C,如果未false直接結束流程,最後執行C,如果不用這個神技,處理起來比較麻煩,下面是一種寫法

               if( A() )
                {
                    if( B() )
                    {
                        C();
                    }
                }

可以看出多層巢狀if,如果流程夠多if巢狀繼續增加,下面是神技寫法

           do
            {
                if( !A() )
                {
                    break;
                }

                if( !B() )
                {
                    break;
                }
                C();
            } while( false );

可以看到解決了if巢狀,而且從程式碼上符合人的邏輯思維

  • try{}catch、升級版do{}while(false)

現在有一個新需求,那就是流程ABC執行後,無論前面的結果都要執行流程D,用do{}while(false)的寫法如下

 

do
{
    if( !A() )
    {
        break;
    }

    if( !B() )
    {
        break;
    }
    C();
} while( false );
D();

 

其實高階語言的try-catch功能同樣可以達到do{}while(false)的效果,用法如下

try
{
    if( !A() )
    {
        throw new Exception();
    }

    if( !B() )
    {
        throw new Exception();
    }
    C();
}
catch( Exception e)
{

}
finally
{
    D();
}

 

是不是看著跟do{}while(false)結構一致

 

用以上的方法可以很方便的處理流程,希望對大家有所幫助