通常可以知道在for循环中放置一个案例是否会导致组装错误。我主要对Delphi感兴趣,但无论是在风格还是性能方面,这都是一个有趣的编程问题。
这是我的密码!
case ResultList.CompareType of
TextCompareType:
开始
LastGoodIndex:= -1;
对于I:= 1到ResultList.Count -1 do
if(LastGoodIndex = -1)和(不是ResultList [I] .Indeterminate)然后
LastGoodIndex:=我
否则如果不是ResultList [I]。然后确定
开始
if(StrComp(ResultList [LastGoodIndex] .ResultAsText,
ResultList [I] .ResultAsText)> 0)
然后(结果FalseEval)
结果:= TrueEval
其他
结果:= FalseEval;
LastGoodIndex:=我;
结束;
结束;
结束;
NumericCompareType:
开始
//与上面的数字比较相同
结束;
DateCompareType:
开始
//与上面相同,带有日期比较
结束;
BooleanCompareType:
开始
//与上面的布尔比较相同
结束;
或者我可以写
开始
LastGoodIndex:= -1;
对于I:= 1到ResultList.Count -1 do
if(LastGoodIndex = -1)和(不是ResultList [I] .Indeterminate)然后
LastGoodIndex:=我
否则如果不是ResultList [I]。然后确定
开始
case ResultList.CompareType of
TextCompareType:
开始
if(StrComp(ResultList [LastGoodIndex] .ResultAsText,
ResultList [I] .ResultAsText)> 0)
然后(结果FalseEval)
结果:= TrueEval
其他
结果:= FalseEval;
LastGoodIndex:=我;
结束;
NumericCompareType:
开始
//与上面的数字比较相同
结束;
DateCompareType:
开始
//与上面相同,带有日期比较
结束;
BooleanCompareType:
开始
//与上面的布尔比较相同
结束;
结束;
结束;
结束;
我不喜欢第二种方式,因为我问一个问题,我知道在for循环中的答案,我不喜欢第一种方式,因为我重复我用来确定哪些对象包含的代码有效信息。
也许有人可以建议的设计模式可以一起避开这一切。