美文网首页
要计算,不要判断

要计算,不要判断

作者: ahuangliang | 来源:发表于2018-06-23 14:32 被阅读12次

    If ... else ...是程序中复杂性的主要来源,减少If ... else ...就是减少复杂性。

    如果可以用? :运算符替换一个If ... else ...,那么最好替换。它不只是把三行写成一行,而是用一次运算代替了一次判断。程序复杂度从2变成了0。需要注意? :并不是一个真正的运算符,它相当于一个分段函数:

    f(x) = {
       x != 0, g(x);
       x == 0, h(x);
    }
    

    最佳的办法当然是把x的范围限定到有效那部分,这样就变成g(x)h(x)

    另一个办法是合并g/h,用一个函数来计算,比如说,对于集合

    if (x !in coll) return;
    
    for (a in coll) {
        do some thing
    }
    

    把上下两部分看成一个函数,可以用空循环处理代替第一个判断,或者在集合尾部加上x做为哨兵,当成始终都有x元素的集合处理。

    // 使用空循环代替第一个判断, 当没有x时,for循环为空。
    for (a in  coll.filter(a => a != x)) {
        do some thing
    }
    // 或者使用哨兵
    coll.push(x)
    for (a in coll) {
       // 一定有一个x
    }
    

    相关文章

      网友评论

          本文标题:要计算,不要判断

          本文链接:https://www.haomeiwen.com/subject/gygryftx.html