三元运算符和维护

|                                                                                                                       
已邀请:
        我认为最好的解决方案是保留三元运算符,但要添加括号
return condA ? ( condB ? 20 : -10 ) : -20;
否则可能会很容易混淆。 另外,如果三元运算符仅出现在嵌套的最后一级,则最好使用混合方法。
if(condA)
{
    return condB ? 20 : -10;
} else {
    return -20;
}
    
        显然,程序员A将“短代码”与“可维护且可读的”代码混淆了。     
        每天我都会选择程序员B。仅出于聪明代码的原因,聪明的代码通常很难理解和维护,这占您在工作中的屏幕查看花费的时间的70%以上。 程序员的B方式简单明了,很难出错。     
        首先,这显然是主观的-无论如何,我很想投票以结束问题。但是,我认为仍然可以提出一些不太主观的要点。 我会用不同的方式编写它,但是仍然使用条件运算符。我会用这个:
return !condA ? -20
     : !condB ? -10
     : 20;
换句话说,在每种情况下都将\“ simple \”情况作为第二个操作数-这样我们就可以在每一行上看到\“如果此条件成立,则返回值就是那个。\”这样看起来有点更像第二个代码,但是有点麻烦。 (而且我也不喜欢这样在同一行上使用大括号-当您将那些expand3ѭ块展开时,它会很漫长。)     
        我认为行数不是可读性的指标。您可以将很多疯狂的东西放在一行中,但这并不意味着每个人都清楚这行的作用。 我尝试完全避免使用三元运算符(对于一些琐碎的情况,请避免这样做),因为以程序员的身份解析这些行的开销比节省空间要高得多。 对于嵌套语句(例如您的示例)尤其如此。 例子:对我来说,一个琐碎的案子就像
_foo = (bar != null) ? bar : String.Empty;
    
        我倾向于同意,如果您可以将代码放在一行中而不损失易读性,那么它是一种很好的做法。 我喜欢三元运算符,因为它们确实会使代码更短一些,但它们通常需要花费一秒钟多的时间才能理解。 嵌套的三元运算符永远不会在我监督的任何项目中占有一席之地。代码必须优先考虑易读性,并且在我看来嵌套三元操作实在是太远了。     
        这很简单。使用括号。     

要回复问题请先登录注册