减少嵌套层次

最后更新于:2022-04-02 04:16:25

[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 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(); } ```
';