在此重新提出此问题,因为它不属于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
逻辑是它不必评估范围本身,从而提高速度。
我认为该范围看起来更好,据我所知,它实际上不会影响速度(我不是很明显,我的意思是),因为它只是迭代,因为它去。我这么想是不正确的?
浪费周期是我的一个难题,但是编写奇怪的代码是我的一个难题。
答案 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 9
或0 1 2 3 4 6 7 8 9
直观地发现问题比较棘手)。