iam*_*eed 4 c# optimization if-statement
有没有理由我不应该通过测试他们的产品来测试0的一组变量?
通常在我跨不同语言的编码中,如果它们都由零组成,我将测试一组变量来做某事.
例如(c#):
if( myString.Length * myInt * (myUrl.LastIndexOf(@"\")+1) == 0 )
Run Code Online (Sandbox Code Playgroud)
代替:
if( myString.Length == 0 || myInt == 0 || myUrl.LastIndexOf(@"\") < 0)
Run Code Online (Sandbox Code Playgroud)
有没有理由我不应该这样测试?
你不应该这样做,因为你所做的事情并不明显.代码应该清晰,易读且易于维护.
这很聪明,但它会让下一个看你的代码的人必须通过这种方式"破译"你的意图.
这有几个原因.一切都很重要,而且没有特别的顺序.
if (myObj != null && myObj.Enabled)不抛出异常myString.Length * myInt * myUrl.LastIndexOf(@"\") == 0实际上相当于在所有实际情况下if( myString.Length > 0 && myInt != 0 && myUrl.LastIndexOf(@"\") <= 0)?我不确定.我对此表示怀疑.我确信我可以通过一些努力来解决这个问题,但为什么我必须首先考虑?这让我想到......&&将来阅读此代码的任何人都将更难理解它正在做什么.并且不要找借口说"我将是唯一一个阅读它的人",因为在几个月或几年内,你可能已经忘记了写作时的想法和惯例,并且正在阅读就像其他人一样.