How to rewrite complicated lines of C++ code (nested ternary operator)

后端 未结 7 1593
误落风尘
误落风尘 2020-12-05 23:29

I\'ve been looking through someone else\'s code for debugging purposes and found this:

!m_seedsfilter ? good=true : m_seedsfilter==1 ? good=newClusters(Sp) :         


        
7条回答
  •  孤城傲影
    2020-12-05 23:54

    Nested ternary statements make code less readable IMHO. I would use them only when they significantly simplify the rest of the code. The quoted code could be re-written like this:

    good = !m_seedsfilter ? true : m_seedsfilter==1 ? newClusters(Sp) : newSeed(Sp); 
    

    or like this:

    if(!m_seedsfilter)
        good = true;
    else if(m_seedsfilter==1)
        good = newClusters(Sp);
    else
        good = newSeed(Sp);
    

    The 1st choice is more succinct, but less readable for a novice and less debugable.

提交回复
热议问题