这个乘法嵌套三元表达式的等价if / else语句是什么?

时间:2015-03-29 00:53:51

标签: c++ if-statement ternary-operator

我在Notepad ++中重构了一大块代码,并在parameters.cpp

中遇到了这个问题

Someone got really carried away with the ternary operator

if / else语句的等效系列是什么?

3 个答案:

答案 0 :(得分:3)

这似乎更像是打字挑战而非实际问题......

const TCHAR *pFolderStyleStr;

if ( svp._folderStyle == FOLDER_STYLE_SIMPLE )
    pFolderStyleStr = TEXT("simple");
else if ( svp._folderStyle == FOLDER_STYLE_ARROW )
    pFolderStyleStr = TEXT("arrow");
// (same for circle and none)
else 
    pFolderStyleStr = TEXT("box");

此处switch优于if..else,但我认为没有理由更改原始代码。 “重构”并不意味着“为了它而改写”。

如果你真的想重构,那么我的建议就是:

const TCHAR *pFolderStyleStr = folder_style_string(svp._folderStyle);

并添加一个函数:

const TCHAR *folder_style_string(WHATEVER_TYPE style)
{
     switch(style)
     {
     case FOLDER_STYLE_SIMPLE: return TEXT("simple");
     // ...
     default: return TEXT("box");
     }
}

答案 1 :(得分:0)

这相当于这样的事情:

if(folder_style == SIMPLE)
    text = "simple"
else if(folder_style == ARROW)
    text = "arrow"
//...more statements
else
    text = "box"

答案 2 :(得分:0)

对于嵌套的三元表达式,我建议切换/ case语句比if / else更有效。