大家好,
最近和老外在一个项目里面讨论一个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嵌套--《重构》推荐第一种
我个人也用第一种,因为通常采用单一职责方式编写代码,数据清理校验和数据执行分开,微软有部分人叫“手术室清理原则”(更常规的叫法是“断言编程”)