减少嵌套层次
最后更新于: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();
}
```
';