簡體   English   中英

使用條件語句激活功能的目的是什么?

[英]What is the purpose of using conditional statements to activate a function?

激活這樣的功能的目的是什么

if(!FUNCTION()){
  return(1);
}

為什么不像這樣調用函數

FUNCTION();

盡管我在應用程序的初始化中使用了條件語句,並且實際上根本不會導致系統混亂,但是僅調用FUNCTION()會不會更快?

我知道有條件的收益也為1,但這不是不必要的收益嗎?

我在此代碼段中像這樣使用它:

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
    //HWND initialization
    if(!InitMainWindow(hInstance, nCmdShow)){
        return 0;
}

目的是檢查FUNCTION的返回值。 大概, FUNCTION聲明如下:

bool FUNCTION();

返回值( bool )表示成功或失敗的地方。 假設您有一個連接數據庫的函數:

bool ConnectToDatabase();

ConnectToDatabase嘗試連接到數據庫,但是在實際代碼中會發生不好的事情,並且功能並不總是成功。 如果我們在較大的上下文中使用此代碼:

ConnectToDatabase();
databasePointer->GetTheTable();

您可以看到我們是否無法連接到數據庫,嘗試附加到數據庫中的表將永遠不會成功,實際上,數據庫指針databasePointer甚至可能無效。 試圖附加到未連接的數據庫表中的表肯定只能以失敗告終。

因此,在繼續進行假定它們已執行的代碼之前,我們先檢查確保調用的函數能夠達到預期的效果:

if (!ConnectToDatabase())
  return false
databasePointer->GetTheTable();

您發布的示例代碼大致相同,但有一些不同:

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
    //HWND initialization
    if(!InitMainWindow(hInstance, nCmdShow)){
        return 0;
}

在這種情況下, InitMainWindow可能是一個功能不只是一件事情:

  1. 它創建主窗口。
  2. 等待用戶完成主窗口的使用
  3. 關閉主窗口后, InitMainWindow返回

因此,在這里您可以看到對InitMainWindow的調用可能需要幾分鍾或幾小時才能返回,而當返回時,是該程序退出的時候了。

另一方面, InitMainWindow可能就這么簡單-它只是初始化主窗口並立即返回。 在這種情況下,如果InitMainWindow由於某種原因失敗,我們就不想開始使用該窗口。

以這種方式調用該函數使您可以將結果輸入類似但更復雜的結構中。

例如,假設您有一個函數:

int somefunc(){
    if (!otherfunc())
        return 1;
}

然后,您可以將結果輸入另一個if語句。

if (somefunc())
    // Do Something meaningful

從技術上講,此代碼有一個錯誤,因為如果InitMainWindow返回非零值,WinMain將沒有返回值,盡管對於主函數通常會忽略該返回值。

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
    //HWND initialization
    if(!InitMainWindow(hInstance, nCmdShow)){
        return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM