手机上的算法优化 —— 分支优化

【前言】

        作为一个程序猿,if - else的使用会贯穿我们的整个职业生涯,但是有句话说的好,成年人不做选择题,那我们应该如何避免选择题呢?

【Show me the fucking code!】

if(condition 1) {
    分支流程1
} else if(condition 2) {
    分支流程2
}
 ……
else {
    分支流程n
}

【违反开放、封闭原则】: 新增一种判断时,会新增一个if-else分支

【函数表优化】

针对与上述原则,建议使用函数表结构

typedef bool (*ProcessFuncPtr)(const ItemState& current, ItemState& next);
struct ActionProcess{
    Action act;
    ProcessNextFuncPtr processFunc;
}

ActionProcess actMap[] =
{
    {FARMER_GO, ProcessFarmerGo},
    {FARMER_GO_TAKE_WOLF, ProcessFarmerGoTakeWolf},
    {FARMER_GO_TAKE_SHEEP, ProcessFarmerGoTakeSheep},
    {FARMER_GO_VEGETABLE, ProcessFarmerGoVegetable},
    {FARMER_BACK, ProcessFarmerBack},
    {FARMER_BACK_TAKE_WOLF, ProcessFarmerBackTakeWolf},
    {FARMER_BACK_TAKE_SHEEP, Proces
上一篇:剔除


下一篇:【C++】学习笔记[十六]