这种SB指引还有很多,例如只能出现一个return之类……
而事实是,我们code review的一个很重要的原则就是短路优先。
也就是说,尽可能的短路(throw,return,break,continue)
语言发明这么多的短路运算符就是为了让你的代码更容易看懂的……
===========================================
稍微讲一下什么叫做短路优先,
就是短路径优先,路径可以认为是某一个语句块,这个语句块是抽象意义上的,所以短路优先,就是语句块尽可能短而不是长,因为越短的语句块,人阅读时的心智负担就越小。
所以:
函数尽可能短,太长的函数拆分。
控制块尽可能短,太长的控制块抽出函数。
条件判断时,短分支写在长分支前面。
条件判断时,能不写else分支就不写,else if除外
变量声明和变量使用的间隔尽可能地短。
变量的作用域尽可能的短。
得到返回值尽可能早的return,清理操作放finally。[1]
发现异常尽可能早的throw,哪怕catch再rethrow。[2]
@Zheng Dara 有一句话说的很对,咱写代码又不是写给傻子看的……
[1]
例子:
public object Foo() { using( var stream = File.Open( "xxx" ) ) { if ( TryParse( stream, out var result ) return result; //a lot of codes... } }
注:using是finally的语法糖
[2]
例子:
public void Foo() { try { if ( TryDoSomething() == false ) throw new InvalidOperationException( "invalid operation" ); //a lot of codes ... } catch( Exception e ) { LogError( e ); throw; } }
以前我也信了邪,后来我发现这些都是异端啊,天天就琢磨这些细枝末节,continue不让用,"?:"三元运算符也不让用,理由好可笑,说怕别人看不懂。
我只想说学编程的没一个是傻子,所以写代码也没必要向下兼容傻子,难道不是吗?比如我写java函数式难道还要考虑别人懂不懂函数式吗?都是语法里的东西,看不懂真不是我的锅啊。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有