代码之家  ›  专栏  ›  技术社区  ›  Nathan Smith Hilborn

我应该评估一个范围吗?

  •  0
  • Nathan Smith Hilborn  · 技术社区  · 8 年前

    我们在这里问这个问题,因为它不属于代码审查SE。

    我一直被教导在代码中永远不要有静态表达式,因为这是一个不必要的操作,总是有相同的输出。例如,你永远不会 if 6 < 7 while true 周围)。

    也就是说,我有一个功能强大的bash脚本,如下所示:

    #!/usr/bin/env bash
    for i in {0..9}
    do
        ...some stuff...
    done
    

    然而,PyCharm在我的第一段中再次重申了我的担忧,这让我付出了巨大的代价。其反建议是:

    #!/usr/bin/env bash
    for i in 0 1 2 3 4 5 6 7 8 9
    do
        ...some stuff...
    done
    

    逻辑是它不必评估范围本身,从而提高速度。

    我的问题

    我认为这个范围看起来更好,而且据我所知,它实际上不会影响速度(我的意思不是很明显,我的意思是根本没有),因为它只是在进行迭代。我这样想是不对的吗?

    浪费周期让我恼火,但编写外观怪异的代码更让我恼火。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Charles Duffy    8 年前

    在bash或其他采用ksh扩展的shell中,最佳实践方法是C风格 for 回路:

    for ((i=0; i<=9; i++)); do
      echo "Doing some stuff with $i"
    done
    

    这比 {0..9} 语法,因为它与变量一起工作( {$min..$max} 不起作用,因为大括号扩展发生在变量扩展之前),并且避免了需要立即将完整列表存储在内存中,而且它比 0 1 2 3 4 5 6 7 8 9 因为后者很难检查拼写错误(用视觉识别问题更难) 0 1 2 3 5 4 6 7 8 9 0 1 2 3 4 6 7 8 9 ).

    推荐文章