enjoe
1
原始代码:
if target > value {
start = m + 1
} else {
if reverse {
start = m + 1
} else {
end = m - 1
}
}
格式化文档后
if target > value {
start = m + 1
} else if reverse {
start = m + 1
} else {
end = m - 1
}
这个我理解,就像数电的电路化简一样,化简前后两个结构差异巨大的组合电路实现的逻辑是一样的,只看化简后的电路可能看不出设计时的想法;格式化后的代码就类似于化简后的电路,有时候并不希望格式化时改动原本的结构。不过话说回来,一般代码结构都不会太复杂以至于格式化导致的差异太大。
1 个赞
eczn
4
如果是块级语句,这样化简就显得步子很大(在 js 里这甚至还有块级 scope 的问题)
但 moonbit 里,if 是一类表达式 —— 因此这种跨一整块的化简没有任何问题,显得很自然(就像你写加减法多写了括号编译器帮你去掉那样自然)
enjoe
5
如楼上 violin 所言。
我习惯认为 if …else… 是对相同对象的检查判断。现在这种提升,是对不同对象的检查,虽然代码效果等价,但感觉怪怪的。
这种变更,是不是放在代码编译中更好些?
感谢您的建议,moonfmt后续会考虑保留else{ }
分支的花括号的