当前位置: 代码迷 >> C# >> 生手求教,有没有办法把嵌套 if elseif 等等 的括号给自动标记的插件
  详细解决方案

生手求教,有没有办法把嵌套 if elseif 等等 的括号给自动标记的插件

热度:317   发布时间:2016-05-05 05:04:40.0
新手求教,有没有办法把嵌套 if elseif 等等 的括号给自动标记的插件?

嵌套多了之后,根本不知道那个括号是哪个,我以前都是用vb的,感觉看起来很累,现在转学C发现更累,满屏幕的括号,根本分不清那个是哪个的, vb至少还有一条竖线链接开头和结尾,还好些,
这个C啊,我的天,真心不方便.

还有那个结尾的; 干嘛要这个玩意啊.每次打累死了,而且有的有有的没有,要是能想vb那样一行的多好.


求高手指点下. 你们如果嵌套的多了,都是怎么区分括号的.
------解决思路----------------------
你设计语法结构时,尽量不要嵌套,或者说尽量避免2、3层以上的嵌套。尽量使用逻辑式的语言,例如“抽出独立的方法”,在第一层次使用多个 return 语句。

例如这样的代码:
public int Num { get; private set; }
public bool isFrameOver
{
    get
    {
        if (this.Num > 10)
            throw new InvalidOperationException("比赛最多只能进行10局。");

        if (this.Throw.Count == 0)
            return false;

        if (this.Throw[0] == 10)
            return this.Num < 10 
------解决思路----------------------
 this.Throw.Count == 3;

        if (this.Num < 10)
            return this.Throw.Count == 2;
        else
            return this.Throw.Count > 1 && (this.Throw[0] + this.Throw[1] < 10 
------解决思路----------------------
 this.Throw.Count == 3);
    }
}


这里使用那个多个 return 而不是嵌套 if 判断,与自然语言的设计文档的语法完全一致。毕竟写程序首先要考虑易读,而不是为了使用程序控制结构而编程。

如果一定要多层嵌套,那么你就可以把深层的东西独立成一个方法,不再在这里去多写一行代码(而是推给将来去实现)。

结论就是:我们的程序里的嵌套根本就不多啊!
------解决思路----------------------
基本上,如果看到有3、4层嵌套,我们要看懂它,一定是在脑袋里将深层的嵌套跟浅层的嵌套“分开来理解”了,不需要代码作者把中间部分抽出成为独立的方法,但是我们的“想象力”一定是把中间部分想象成一个独立的服务功能,然后重新再看一遍外层的嵌套。这时候虽然你看到了里边的嵌套代码,但是你无视它,只看外边1、2层嵌套的逻辑。

其实也就是这样的。

所以许多国外的流行的软件,经过许多人重构,你会发现特别重要的方法总是只有短短的几行,而不是有几十行。就是因为许多人都想以后再看时不用这么费脑筋了,避免过多的嵌套,将方法分层设计了。
------解决思路----------------------
最后,我随时会按下快捷键 Ctrl+E+D,来格式化一下源代码。然后根据缩进,而不是“竖线”,你就能更容易地看清语法结构。

当一个文件的代码很多时,经常也会使用 #region 来折叠,让你少看到一些烦人的代码。
------解决思路----------------------
非要把所有逻辑写在一个方法里,当然缩进就厉害了,我看到过一个方法2000行代码,里面有两大块分别900多行的循环,那叫一个醉