<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 減少嵌套層次的技術總結 ### 重復判斷一部分條件 bad ``` if(inputStatus == InputStatus_Success){ // lots of code ... if( printerRoutine !=NULL){ // lots of code ... if(SetupPage()){ // lots of code ... if(AllocMen(&printData)){ // lots of code ... } } } } ``` good ``` if(inputStatus == InputStatus_Success){ // lots of code ... if(printRouine !=NULL){ // lots of code ... } } if(inputStatus == InputStatus_Success && (printRoutine !=NULL) && SetupPage() ){ // lots of code ... if(AllocMen(& printData)){ // lots of code ... } } ``` ### 轉換成if-then-else bad ``` if(10 <quantity){ if(100 <quantity){ if(100 <quantity){ discount = 0.10; }else{ discount = 0.05; } }else{ discount = 0.025; } }else{ discount = 0.0; } ``` good ``` if(1000 <quantity){ discount = 0.10; }else if( 100 <quantity ){ discount = 0.05; }else if( 10 <quantity ){ discount = 0.025; }else{ discount = 0; } ``` ### 轉換成 switch 語句 bad ``` while( !Transactionscomplete()){ // read transaction record transaction= ReadTransaction(); // process transaction depending on type of transaction if( transaction.Type == TransactionType_Deposit ){ ProcessDeposit( transaction. AccountType, transaction Account SubType, transaction. AccountNum, transaction. Amount ) }else if( transaction.Type == TransactionType_withdrawal){ Processwitharawal( transaction.Account Type transaction.Account Num transaction.Amount ) }else if( transaction.Type == TransactionType_Transfer ){ MakePundsTransfer( transaction.SourceAccountType, transaction.TargetAccountType, transaction.AccountNum, transaction.Amount ) }else{ // process unknown transaction type LogTransactionError("Unknown Transaction Type", transaction); } } ``` good ``` while (!Transactionscomplete()){ transaction= ReadTransaction(); switch(transaction.Type){ case (TransactionType_Deposit); ProcessDeposit( transaction. AccountType, transaction Account SubType, transaction. AccountNum, transaction. Amount ) break; case (TransactionType_withdrawal); Processwitharawal( transaction.Account Type transaction.Account Num transaction.Amount ) break; case (TransactionType_Transfer); MakePundsTransfer( transaction.SourceAccountType, transaction.TargetAccountType, transaction.AccountNum, transaction.Amount ) break; default: LogTransactionError("Unknown Transaction Type", transaction); break; } } ``` ### 使用對象和多態派分(polymorphic dispatch) ``` TransactionData transactionData Transaction *transaction while( !Transactionscomplete())( // read transaction record transactionData = ReaaTransaction(); // create transaction object, depending on type of transaction switch transactionDataType ){ case( TransactionType_Deposit ): transaction= new Deposit( transactionData ); break case( TransactionType_withdrawal ): transaction= new withdrawal( transactionData); break; case( TransactionType_Transfer ): transaction = new Transfer( transactionData); break default: // process unknown transaction type LogTransactionError('Unknown Transaction Type", transactionData) return; } transaction->Complete(); delete transaction; ``` ### 把深層嵌套的代碼提取成單獨的子程序 對于各種規模的系統,都可以用 Factory Method 模式來替換其中的 switch語句 該模式可以重用于系統中任何需要創建 Transaction 類型對象的場合。如果在這個系統里使用下面的代碼,那么這一部分還會變得更加簡單 ``` TransactionData transactionData: Transaction *transaction: while( !Transactionscomplete())( // read transaction record and complete transaction transactionData = ReadTransaction(); transaction = TransactionFactory.Create( transactionData ); transaction->Complete(); delete transaction(); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看