Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拥有大量的if-else条件是否是一种良好的实践?_C#_Asp.net_If Statement_Stringbuilder - Fatal编程技术网

C# 拥有大量的if-else条件是否是一种良好的实践?

C# 拥有大量的if-else条件是否是一种良好的实践?,c#,asp.net,if-statement,stringbuilder,C#,Asp.net,If Statement,Stringbuilder,在我的一个web应用程序中,我正在使用代码隐藏中的字符串生成器 StringBuilder str = new StringBuilder(); if (isLogIN != false) { if (isValidUser == true) { str.Append("<div id='sfBtnSubmitWrapper' >"); if (CheckIfAlreadyPlayed()) {

在我的一个web应用程序中,我正在使用代码隐藏中的字符串生成器

StringBuilder str = new StringBuilder();
if (isLogIN != false)
{
    if (isValidUser == true)
    {
        str.Append("<div id='sfBtnSubmitWrapper' >");
        if (CheckIfAlreadyPlayed())
        {                           
            str.Append("<input type='button'");
            str.Append("value='Predict Now' class='sfBtn' id='sfBtnSubmitAnswer' />");                               
        }
        else
        {
            str.Append("<input type='button'");
            str.Append("value='Already participated.' class='sfBtn' id='sfBtnSubmitAnswer' />");
        }
         str.Append("</div>");
    }
    else
    {
        if (CheckEarnedGame())
        {
            str.Append("<div id='sfBtnSubmitWrapper' ><input type='button'");
            str.Append("value='Predict Now' class='sfBtn' id='sfBtnSubmitAnswer' />");
            str.Append("<p style='color:green'>You have reached your daily limit");
            str.Append("but your earned games still remain.</p>");
            str.Append("</div>");
        }
        else
        {
            str.Append("<div id='sfSettingInfo'>");
            str.Append("<a class='ClosePopupImg' id='closeOptionDiv' title='Close'></a>");
            str.Append("<span id='errorLimitmsg'>");
            str.Append("<p style='color:red'>Sorry !!!</br>You have crossed");
            str.Append("your limit of games.</p></span><span id='btnPlayMore'");
            str.Append("class='sfBtn'>Play More");
            str.Append("</span><div id='optionDiv'></div></div>");
        }
    }
}
StringBuilder str=new StringBuilder();
if(isLogIN!=false)
{
如果(isValidUser==true)
{
str.Append(“”);
如果(选中IfalReadyPlayed())
{                           
str.Append(“”);
}
其他的
{
str.Append(“”);
}
str.Append(“”);
}
其他的
{
if(checkEarnedName())
{
str.Append(“”);
str.Append(“

您已达到每日限制”); str.Append(“但您赢得的游戏仍然存在。

”; str.Append(“”); } 其他的 { str.Append(“”); str.Append(“”); str.Append(“”); str.Append(“

对不起!!!
你已经越界了”); str.Append(“你的游戏限制。

玩更多”); str.Append(“”); } } }

我在实际代码中使用了更多的(if-else)条件。我有点搞不清楚使用大量if-else条件是一种好的做法,还是有其他方法可以做到这一点。

你所说的是,不,它不是那么好

每次添加一条新的if语句时,本质上都会创建另一条代码可以遵循的路径,从而降低其复杂性

也就是说,使用if/else语句并不坏,没有它们就无法真正编写代码

但是,正如您已经通过查看代码发现的,它似乎有点脏

那怎么办呢

欢迎来到软件设计和设计模式

非常常见的设计模式通常可以覆盖这些类型,我会先通过原则了解基本知识,然后再阅读一些常见的模式


一旦你开始走这条路,你就会开始看到简单的解决方案。

你所说的是,不,它不是那么好

每次添加一条新的if语句时,本质上都会创建另一条代码可以遵循的路径,从而降低其复杂性

也就是说,使用if/else语句并不坏,没有它们就无法真正编写代码

但是,正如您已经通过查看代码发现的,它似乎有点脏

那怎么办呢

欢迎来到软件设计和设计模式

非常常见的设计模式通常可以覆盖这些类型,我会先通过原则了解基本知识,然后再阅读一些常见的模式


一旦沿着这条路径开始,您将开始看到简单的解决方案。

如果您尝试将“if”下的每个代码块提取到函数,那么您应该尝试通过抽象委托执行(每个块/函数将是从公共接口继承的类的方法)

如果您尝试将“if”下的每个代码块提取到函数,那么您是否应该尝试通过抽象来委托执行(每个块/函数都将是从公共接口继承的类方法)

@Acme您可以向我推荐除上述方法之外的任何其他方法吗?您尚未指定您的要求。你只问了很多的
如果else
是好是坏,没有一个答案。你的代码在我看来还可以。当唯一可能的答案是“视情况而定”时,这个问题不太适合这样做。我必须通过字符串生成器附加html标记,我必须检查很多条件,使用这种方法时它看起来很混乱。所以我正在寻找最好的方法。@很难判断您是否可以使用switch或嵌套switch case语句,因为我不确定你的要求。如果你认为你可以实现开关盒stmts。它比使用大量的If-else梯子干净得多/blocks@Acme你能给我提一下以上以外的其他建议吗?你还没有具体说明你的要求。你只问了很多的
如果else
是好是坏,没有一个答案。你的代码在我看来还可以。当唯一可能的答案是“视情况而定”时,这个问题不太适合这样做。我必须通过字符串生成器附加html标记,我必须检查很多条件,使用这种方法时它看起来很混乱。所以我正在寻找最好的方法。@很难判断您是否可以使用switch或嵌套switch case语句,因为我不确定你的要求。如果你认为你可以实现switch case stmts。它比使用大量If-else梯形图/块要干净得多