【问题标题】:How to do decompose conditional refactoring?如何进行分解条件重构?
【发布时间】:2015-08-18 06:32:07
【问题描述】:

我在代码中遇到过这种情况,我认为代码不必要的复杂,我相信我可以重构它以使其更易于理解和阅读。 所以我搜索了一下,发现分解条件重构,但我仍然怀疑如何进行重构

if(count($bagTypes) == 1 && (array_key_exists('type1', $bagTypes)
    || array_key_exists('type2', $bagTypes)
    || array_key_exists('type3', $bagTypes))){
        $flag = 1;
}

if(count($bagTypes) == 2 && (
    (array_key_exists('type1', $bagTypes) && array_key_exists('type2', $bagTypes)) ||
    (array_key_exists('type1', $bagTypes) && array_key_exists('type3', $bagTypes)) ||
    (array_key_exists('type2', $bagTypes) && array_key_exists('type3', $bagTypes)))
){
    $flag = 1;
}

有没有更好的方法?

【问题讨论】:

    标签: php if-statement refactoring conditional


    【解决方案1】:

    你可以试试这样的:

    $arrayKeys = array(
        'type1',
        'type2',
        'type3'
    );
    
    $bagTypesKeys = array_keys($bagTypes);
    
    if ((count($bagTypes) == 1 && count(array_diff($arrayKeys, $bagTypesKeys)) < 3)
        || (count($bagTypes) == 2 && count(array_diff($arrayKeys, $bagTypesKeys)) < 2))
    {
        $flag = 1;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 1970-01-01
      • 2019-12-30
      • 2015-03-23
      • 2022-01-24
      • 1970-01-01
      • 2015-10-11
      • 2020-06-16
      • 1970-01-01
      相关资源
      最近更新 更多