OctoberCK/genshinhelper

建议把所有for循环的代码都换成3段式

Closed this issue · 1 comments

我刚才查代码的时候看到以下形式的代码,其中有bug,逻辑上应该只需要跑5遍,但是由于i++执行时间是在<判断之后,导致for循环内的代码会执行6遍。我刚刚查询了最新的代码,发现已经修复了这个地方,但代码钟别处还有很多地方有使用类似的写法。希望可以修复。
for (let i = -1; i++ < resin.max_expedition_num;)
数字为-1时,先判断-1小于5,然后判断完之后立刻-1++ = 0。同理数字为4时,先判断4<5,然后判断完之后立刻4++ = 5,所以进入循环内部的其实是5。

for (let i = -1; i++ < resin.max_expedition_num;) {
        console.log(i);

这个log会打印出0 1 2 3 4 5。
虽然改成++i就可以修复这个bug,但个人认为i++和++i最好不要在表达式中间使用,实在是很迷糊,仔细想是可以想清楚,但容易出错。所以个人推荐把for循环都写成普通3段式,可以提升可阅读性。

比如现在还有 i++ 在判断中使用的代码

for (let i = 0; i++ < resin.total_task_num;) {

谢谢建议,已全部统一为三段式的写法。
之前其实我已经意识到这个问题了,这个确实是个人习惯,而且i++在判断之前导致了一些bug,后面做修复的之后就只调整了出问题的地方。