C#在if语句的一行中分配多个引用
我见过这样的代码:开发人员在执行一些方法调用后,从if语句中分配属性或局部变量 例如:C#在if语句的一行中分配多个引用,c#,performance,coding-style,code-readability,C#,Performance,Coding Style,Code Readability,我见过这样的代码:开发人员在执行一些方法调用后,从if语句中分配属性或局部变量 例如: void SomeMethod() { MyObject myObject; if ((myObject = DoSomething()) != null) { //Do some business logic } } 我认为当很多这样的赋值发生时,或者在if语句中有更多的赋值,比如访问数组时,会变得非常
void SomeMethod()
{
MyObject myObject;
if ((myObject = DoSomething()) != null)
{
//Do some business logic
}
}
我认为当很多这样的赋值发生时,或者在if语句中有更多的赋值,比如访问数组时,会变得非常混乱
我个人更喜欢这样:
void SomeMethod()
{
MyObject myObject = DoSomething();
if (myObject != null)
{
//Do some business logic
}
}
第一段代码比第二个示例有什么好处吗?有没有微乎其微的效率提升或其他什么?我想知道我是否遗漏了什么
大部分代码集都嵌套在这种风格的代码中,我认为这种风格的代码可读性较低。这种更改对性能没有影响-这是个人偏好的问题。这是因为赋值是一个产生值的表达式,可以在比较或其他表达式中使用。其思想是将赋值“折叠”到条件的头中,本质上保存一行代码 虽然这对单个
if
(行数不变)没有影响,但对较长的条件链确实有影响。例如,它在循环中也很有用
int ch;
while ((ch = reader.Read()) != -1) {
// Do something with ch
}
这有很多很酷的应用(我在一个闭合的while循环中用赋值做了一个单线洗牌)!但它确实降低了可读性,请小心使用!