当前位置: 代码迷 >> C# >> 关于C# coding的一个模式有关问题
  详细解决方案

关于C# coding的一个模式有关问题

热度:309   发布时间:2016-05-05 02:51:11.0
关于C# coding的一个模式问题
大家好,
  最近和老外在一个项目里面讨论一个coding的模式问题,方式一是我们目前用的:
if(condition1)
{
     DoSomething1();
     return
}
if(condition2)
{
    DoSomething2();
    return;
}
........
也就是说处理完一个逻辑用return退出。不参与下面的判断。

但是老外推荐这个方式:
if(condition1)
{
    DoSomething1();
}
else
{
    if(Condition2)
        {
             DoSomething2();
        }
}
他们觉得这个方式coding flow连续不会中断。

所以我想请问的是,在哪本书或者帖子里面有详细讨论过这几个问题我可以参考一下吗?
非常感谢。

------解决思路----------------------
这个老外可能只会点编程。

随便找个函数式编程的任何一支流派,就能看到第一种风格。随便找一个子句逻辑、一阶形式逻辑系统,就能看到第一种风格。可以说,凡是科学家,几乎都喜欢第一种“规则方式”,而不是强调什么处处去搞“flow连续不会中断”。

每一个完整匹配的规则都是独立的(不用看后边的规则是怎么写的就知道结果),这是逻辑程序更短更有效率的体现。比如说为什么有人喜欢sql、linq语法?因为它们都倾向于说明式、规则式的写法。

在特定的地方,用逻辑式的方式写代码如果感觉很清爽,大家都容易读懂(就好像sql、linq一样),那就应该敢于采用。

既不是全篇都使用逻辑函数式是编程风格,也不是反其道而全篇都搞什么“flow连续不会中断”。

------解决思路----------------------
你可以让那个老外读读,他们老外自己写滴书------------《重构》

其中就有专门的章节讲述如何处理if嵌套--《重构》推荐第一种

我个人也用第一种,因为通常采用单一职责方式编写代码,数据清理校验和数据执行分开,微软有部分人叫“手术室清理原则”(更常规的叫法是“断言编程”)

  相关解决方案