我应该评估范围吗?

时间:2017-10-13 20:49:46

标签: bash

在此重新提出此问题,因为它不属于Code Review 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 个答案:

答案 0 :(得分:1)

采用ksh扩展的bash或其他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 90 1 2 3 4 6 7 8 9直观地发现问题比较棘手)。